2010-09-28 3 views
73

J'ai créé une branche d'un projet SVN appelé 'features', et maintenant, quand j'essaie de mettre à jour ce projet, il apporte un dossier features, 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?Suppression d'une branche SVN

Répondre

87

Bien sûr: svn rm le dossier indésirable, et valider.

Pour éviter cette situation à l'avenir, je suivrais le recommended layout pour les projets SVN:

  • Mettez votre code dans le dossier /someproject/trunk (ou tout simplement /trunk si vous voulez mettre un seul projet en le dépôt)
  • branches créées en tant que /someproject/branches/somebranch
  • mettre des étiquettes sous /someproject/tags

Maintenant, lorsque vous extrayez une copie de travail, assurez-vous de vérifier seulement trunk ou une branche individuelle. Ne pas vérifier tout dans une copie de travail énorme contenant toutes les branches.

Sauf si vous savez ce que vous faites, dans ce cas, vous savez comment créer des copies de travail peu profondes.

48

En supposant que cette branche n'est pas un externe ou un lien symbolique, en supprimant la branche doit être aussi simple que:

svn rm branches/<mybranch> 

svn ci -m "message" 

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

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

Ensuite, exécutez:

svn update 
+23

de [le livre] (http://svnbook.red-bean.com/en/1.6/svn.ref.svn.c.delete.html): "La suppression d'une URL, cependant, est immédiate, donc vous doit fournir un message de log [avec -m] "donc' svn rm -m message http: // ... 'et pas de' update' requis – rymo

+3

Et svn delete [URL] -m "message" fonctionne aussi. – ronnyfm

2

Vous pouvez supprimer le dossier de caractéristiques comme tout autre dans votre caisse 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.

Attribuez à chaque projet un dossier de lignes réseau, de branches et de balises lors de leur création.

svn 
+ project1 
    + trunk 
    + src 
    + etc... 
    + branches 
    + features 
     + src 
     + etc... 
    + tags 
+ project2 
    + trunk 
    + branches 
    + tags 
2

De la copie de travail:

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

39

Pour ceux qui utilisent TortoiseSVN, vous pouvez accomplir ceci en utilisant le navigateur de référentiel (il est étiqueté "repo-navigateur" dans le menu contextuel .)

context menu

Recherchez le dossier de branche que vous souhaitez supprimer, cliquez dessus avec le bouton droit, puis sélectionnez "Supprimer."

deleting the folder

Entrez votre message de validation, et vous avez terminé.

committing

+8

Tout le monde n'utilise pas non plus de lignes de commande. –

+0

merci mon mec! –

7

Vous pouvez également supprimer la branche sur la télécommande directement. Après avoir fait cela, la prochaine mise à jour supprimera à partir 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 vu dans 'svn info'. Les guillemets doubles sont nécessaires sur la ligne de commande Windows, car ^ est un caractère spécial.

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

1

commande pour supprimer une branche est la suivante:

svn supprimer -m "< votre message >" < branche url >

Si vous souhaitez ne pas chercher/extraira le repo ensemble, exécutez la commande suivante commande sur votre terminal:

1) obtenir le chemin absolu du répertoire qui contiendra votre copie de travail
> PWD
2) Lancer svn Code caisse
> svn checkout < branche url > < chemin absolu du point 1 >

Les étapes ci-dessus vous obtiendrez les fichiers dans le dossier de la branche et non pas le dossier complet.

Questions connexes