svn: Comment annuler une fusion (sans commit)?
j'ai juste fait un svn merge
fusionner les modifications dans le coffre d'une branche:
$ svn merge -r328:HEAD file:///home/user/svn/repos/proj/trunk .
--- Merging r388 through r500 into '.':
A foo
A bar
C baz1
C baz2
U duh
[...]
mais il y a eu trop de conflits, alors j'aimerais y remédier.
une façon de le faire est de s'engager puis de fusionner. Mais je ne peux pas m'engager à cause des conflits. Quelle est la meilleure façon de annuler dans ce cas?
4 réponses
revenir en arrière récursivement à partir du haut de votre copie de travail:
svn revert -R .
Vous aurez besoin de supprimer manuellement les fichiers qui ont été ajoutés. Comme après la réinitialisation, les fichiers ajoutés resteront sur le disque mais seront dans un état non-suivi ("? foo")
tant Que vous n'avez pas commis, vous pouvez toujours revenir à annuler toutes vos modifications.
j'ai fait face à la même situation, j'ai aussi eu d'autres changements que je ne voulais pas perdre.
Ainsi, au lieu de revenir en arrière récursive complète juste svn revert
pour le conflit a été bon pour moi
svn revert baz1 baz2
ne svn resolve
sur tous les conflits de toute façon et de s'engager:
$ svn resolved baz1
$ svn resolved baz2
$ svn ci -m "oops. bad merge. will revert."
Transmitting file data ......
Committed revision 501.
alors, annulez-le officiellement en fusionnant de nouveau à l'endroit où il était:
$ svn merge -r501:500
--- Reverse-merging r319 into '.':
[...]
c'est ça, la fusion a été annulée dans le répertoire. Maintenant s'engager que trop:
$ svn ci -m "bad merge has been undone"
Transmitting file data ......
Committed revision 502.
l'avantage sur Le svn revert -R .
méthode est que les fichiers qui ont été ajoutés sont tous correctement supprimés.