Supprimer une branche SVN

91

J'ai créé une branche d'un projet SVN appelée `` fonctionnalités '', et maintenant, chaque fois que j'essaie de mettre à jour ledit projet, elle apporte un dossier de fonctionnalités, qui contient une autre copie du projet de la branche. Existe-t-il un moyen de supprimer complètement la branche du référentiel afin que cela ne se produise plus?

GSto
la source
Possible duplicata de Delete a branch
Jim G.

Réponses:

110

Bien sûr: svn rmle dossier indésirable, et validez.

Pour éviter cette situation à l'avenir, je suivrais la mise en page recommandée pour les projets SVN:

  • Mettez votre code dans le /someproject/trunkdossier (ou tout simplement /trunksi vous ne souhaitez mettre qu'un seul projet dans le référentiel)
  • Création de branches comme /someproject/branches/somebranch
  • Mettre les balises sous /someproject/tags

Maintenant, lorsque vous extrayez une copie de travail, assurez-vous de vérifier uniquement trunkou une branche individuelle. Ne vérifiez pas tout dans une énorme copie de travail contenant toutes les branches. 1

1 Sauf si vous savez ce que vous faites, auquel cas vous savez comment créer des copies de travail superficielles.

Wim Coenen
la source
58

En supposant que cette branche n'est pas un lien externe ou un lien symbolique, la suppression de la branche devrait être aussi simple que:

svn rm branches/< mybranch >

svn ci -m "message"

Si vous souhaitez faire cela dans le référentiel, puis mettez à jour pour le supprimer de votre copie de travail, vous pouvez faire quelque chose comme:

svn rm http://< myurl >/< myrepo >/branches/< mybranch >

Puis exécutez:

svn update
Grmartin
la source
26
du livre : "La suppression d'une URL, cependant, est immédiate, vous devez donc fournir un message de journal [avec -m]" donc svn rm -m message http://...et pas updateobligatoire
rymo
57

Pour ceux qui utilisent TortoiseSVN , vous pouvez le faire en utilisant le navigateur de référentiel (il est intitulé "Repo-browser" dans le menu contextuel.)

menu contextuel

Recherchez le dossier de branche que vous souhaitez supprimer, cliquez dessus avec le bouton droit de la souris et sélectionnez «Supprimer».

suppression du dossier

Entrez votre message de validation et vous avez terminé.

commettre

2rs2ts
la source
Faites une mise à jour SVN pour supprimer des dossiers de votre disque (s'ils ne sont pas supprimés avant de supprimer la branche)
ArieKanarie
12

Vous pouvez également supprimer la branche directement sur la télécommande. Cela fait, la prochaine mise à jour le supprimera de votre copie de travail.

svn rm "^/reponame/branches/name_of_branch" -m "cleaning up old branch name_of_branch"

Le ^est l'abréviation de l'URL de la télécommande, comme indiqué dans 'svn info'. Les guillemets doubles sont nécessaires sur la ligne de commande Windows, car il ^s'agit d'un caractère spécial.

Cette commande fonctionnera également si vous n'avez jamais extrait la branche.

CodeKid
la source
Je l'ai utilisé à partir d'un Mac et cela a bien fonctionné! Quand j'ai essayé la première réponse, j'ai eu la réponse "" / local / chemin / vers / repo / branches / nom-branche "n'est pas une copie de travail" donc je n'ai probablement jamais réussi à vérifier la branche que j'ai créée
Mad Bernard
3

Vous pouvez supprimer le dossier des fonctionnalités comme n'importe quel autre lors de votre paiement, puis valider la modification.

Pour éviter cela à l'avenir, je vous suggère de suivre les conventions de dénomination pour la mise en page SVN.

Soit donner à chaque projet un dossier trunk, branches, tags lors de leur création.

svn
+ project1
  + trunk
    + src
    + etc...
  + branches
    + features
      + src
      + etc...
  + tags
+ project2
  + trunk
  + branches
  + tags
Chris Nava
la source
3

À partir de la copie de travail:

svn rm branches/features
svn commit -m "delete stale feature branch"

sbi
la source
3

La commande pour supprimer une branche est la suivante:

svn delete -m "<votre message>" <URL de la branche>

Si vous ne souhaitez pas récupérer / récupérer l'intégralité du dépôt, exécutez la commande suivante sur votre terminal:

1) obtenir le chemin absolu du répertoire qui contiendra votre copie de travail
> pwd
2) Démarrer la vérification du code
svn> svn checkout <URL de la branche> <chemin absolu à partir du point 1>

Les étapes ci-dessus vous permettront d'obtenir les fichiers dans le dossier de branche et non dans le dossier entier.

Alvin Chettiar
la source