28 votes

Annulation de révisions spécifiques dans Subversion

Supposons que j'ai un ensemble de commits dans un dossier de référentiel...

123 (250 new files, 137 changed files, 14 deleted files)
122 (150 changed files)
121 (renamed folder)
120 (90 changed files)
119 (115 changed files, 14 deleted files, 12 added files)
118 (113 changed files)
117 (10 changed files)

Je souhaite obtenir une copie de travail qui inclut toutes les modifications de la révision 117 onward mais ne comprennent PAS les changements pour les révisions 118 et 120.

EDIT: peut-être rendre le problème plus claire, je veux annuler les modifications qui ont été apportées dans 118 et 120, tout en conservant tous les autres changements. Le dossier contient des milliers de fichiers dans des centaines de sous-dossiers.

Quelle est la meilleure façon d'atteindre cet objectif?

La réponse, merci à Bruno et Bert, est la commande (dans ce cas, pour l'enlèvement de 120 après la fusion a été effectuée)

svn merge -c -120 .

Notez que le numéro de révision doit être spécifié avec un signe moins. '-120' pas '120'

28voto

Bruno De Fraine Points 11478

Pour annuler les révisions 118 et 120:

 svn up -r HEAD       # get latest revision
svn merge -c -120 .  # undo revision 120
svn merge -c -118 .  # undo revision 118
svn commit           # after solving problems (if any)
 

Voir également la description dans Annuler les modifications .

Notez le moins dans l'argument -c -120 . Le commutateur -c (ou --change ) est pris en charge depuis Subversion 1.4, les anciennes versions peuvent utiliser -r 120:119 .

7voto

neves Points 3075

Il y a une façon simple si vous utilisez TortoiseSVN, un client Windows pour Subversion. Il vous suffit de cliquer pour afficher le journal de mise à jour de votre copie de travail, sélectionnez les révisions que vous souhaitez annuler, cliquez-droit et sélectionnez "annuler les changements de ces révisions".

C'est un fonctionnement sûr car les changements sont appliqués dans votre espace de travail. Vous avez encore à s'engager à modifier votre référentiel.

C'est l'une des meilleures caractéristiques de TortoiseSVN. J'ai toujours été une ligne de commande gars, mais la Tortue changé mon esprit.

-2voto

Christian Davén Points 4527

Je suppose que vous pouvez créer une branche à partir de la révision 117, puis fusionner tout sauf 118 et 120.

 svn copy -r 117 source destination
 

Ensuite, vérifiez cette branche et à partir de là, svnmerge.py merge -r119,120-123

EDIT: Cela n'annule pas les révisions dans la branche / tronc. Utilisez plutôt svn merge .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X