2009-04-07 11 views
13

J'ai accidentellement écrasé une ancienne branche en copiant la ligne par-dessus en utilisant 'svn copy'. Plus précisément, pour chaque sortie, le tronc est ramifié et conservé comme une étiquette, en utilisant:Comment annuler une 'copie svn'

svn copy svn://machine/REPOS/trunk svn://machine/REPOS/tags/$RELEASENR 

Mais cette fois la valeur de « RELEASENR » était celle d'une vieille branche existant au lieu d'un nouveau. Quelqu'un a des idées sur la façon d'annuler cette erreur? Merci déjà!

Répondre

16

Subversion ne fonctionne pas de cette façon. Vous ne l'avez pas réellement écrasé. Si la cible de la copie ou un mouvement existe et est un répertoire, l'élément copié ou déplacé est placé dans ce répertoire:

svn copy svn://machine/REPOS/trunk svn://machine/REPOS/tags/EXISTS_ALREADY 

Si vous regardez, vous devriez trouver:

svn://machine/REPOS/tags/EXISTS_ALREADY/trunk 

Ce qui est une copie du tronc que vous avez juste essayé de marquer. La solution dans ce cas est facile:

svn mv svn://machine/REPOS/tags/EXISTS_ALREADY/trunk \ 
     svn://machine/REPOS/tags/CORRECT_TAG_NAME 

(Si vous n'êtes pas * nix conversant: Le \ signifie que je me suis cassé une ligne logique en deux lignes physiques pour épargner votre barre de défilement horizontale de la surcharge de travail.)

+0

Je soupçonne que si son procédure est identique pour toutes les versions, il a en fait écrasé le tronc existant dans EXIST_ DÉJÀ le répertoire. – mouviciel

+0

Merci, ceci a été utile. Cependant, j'ai choisi d'annuler le cp et de recréer la balise, car le message de validation était également incorrect (il contenait le nom de la balise existante au lieu du nom de la nouvelle balise) et parce que j'aime garder l'historique des changements uniforme et simple pour tous les tags. Pour annuler le cp: 'svn co svn: // machine/REPOS/tags/EXISTS_ALREADY/EXISTS_ALREADY',' cd EXISTS_ALREADY', 'svn merge -c -REVISION_OF_INCORRECT_CP .',' svn commit'. –

2

Pour annuler

svn cp OLDFOLDER NEWFOLDER 

si le changement n'a pas encore été commise, il suffit d'utiliser

svn revert NEWFOLDER --depth=infinity 
Questions connexes