2009-04-07 21 views
13

He sobrescrito accidentalmente una rama anterior copiando el tronco sobre ella usando 'svn copy'. Más específicamente, para cada lanzamiento, el tronco se ramifica y se mantiene como una etiqueta, usando:Cómo deshacer una 'copia de svn'

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

Pero esta vez el valor de 'RELEASENR' era la de una antigua rama existente en lugar de uno nuevo. ¿Alguien tiene alguna idea sobre cómo deshacer este error? ¡Gracias ya!

Respuesta

16

Subversion no funciona de esa manera. En realidad no lo has sobrescrito. Si el destino de la copia o un movimiento existe y es un directorio, entonces el elemento copiado o movido se coloca en ese directorio:

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

Si nos fijamos, usted debe encontrar:

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

que es una copia del tronco que acaba de tratar de etiquetar. La solución en este caso es fácil:

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

(En caso de que usted no está al corriente de * nix: El \ significa que he roto una línea lógica en dos líneas físicas de sobra su barra de desplazamiento horizontal por exceso de trabajo.)

+0

sospecho que si su el procedimiento es idéntico para todas las versiones, en realidad ha sobrescrito el enlace existente en EXIST_ YA directorio. – mouviciel

+0

Gracias, esto fue útil. Sin embargo, decidí deshacer el cp y volver a crear la etiqueta, porque el mensaje de confirmación también era incorrecto (contenía el nombre de la etiqueta existente en lugar del nombre de la nueva etiqueta) y porque me gusta mantener los historiales de cambio uniformes. y simple para todas las etiquetas. Para deshacer el cp: 'svn co svn: // machine/REPOS/tags/EXISTS_ALREADY/EXISTS_ALREADY',' cd EXISTS_ALREADY', 'svn merge -c -REVISION_OF_INCORRECT_CP .',' svn commit'. –

2

Con el fin de deshacer

svn cp OLDFOLDER NEWFOLDER 

si el cambio aún no se ha cometido, sólo tiene que utilizar

svn revert NEWFOLDER --depth=infinity 
Cuestiones relacionadas