Question

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 à partir de la révision 117 mais n'inclut PAS les modifications des révisions 118 et 120.

EDIT: Pour rendre le problème plus clair, je veux annuler les modifications apportées dans les versions 118 et 120 tout en conservant toutes les autres modifications. Le dossier contient des milliers de fichiers dans des centaines de sous-dossiers.

Quel est le meilleur moyen d'y parvenir?

La réponse , grâce à Bruno et à Bert, est la commande (dans ce cas, supprimer 120 après la fusion complète)

svn merge -c -120 .

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

Était-ce utile?

La solution

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 signe moins dans l'argument -c -120 . Le commutateur -c (ou - change ) est pris en charge depuis Subversion 1.4. Les versions antérieures peuvent utiliser -r 120: 119 .

Autres conseils

Il existe un moyen plus simple d'utiliser TortoiseSVN, un client Windows pour Subversion. Cliquez simplement sur pour afficher le journal dans votre copie de travail mise à jour, sélectionnez les révisions que vous souhaitez annuler, cliquez avec le bouton droit de la souris et sélectionnez "Annuler les modifications de ces révisions".

C’est une opération sûre, car les modifications sont appliquées uniquement dans votre espace de travail. Vous devez toujours vous engager pour modifier votre référentiel.

C’est l’une des meilleures fonctionnalités de TortoiseSVN. J'ai toujours été un gars en ligne de commande, mais Tortoise a changé d'avis.

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

svn copy -r 117 source destination

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

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top