2010-10-27 10 views
7

¿Hay alguna manera de revertir desde un conjunto de cambios particular?svn revert from changeset

Los cambios se han cometido, como veo en el conjunto de cambios. Ahora, quiero revertir los archivos antes de que se cometieran.

Hice svn revertir ruta/a/archivo pero no está pidiendo una contraseña ni nada. Nada esta pasando.

+0

Sea más elaborado. – splash

+0

no pasa nada cuando hago svn revertir por archivo. – Woppi

+0

Sea aún más elaborado. Si se han confirmado los cambios, puede volver a una revisión previa a la confirmación ... – user434507

Respuesta

3

Resuelto: svn merge -r1234: 4321 ruta/a ruta/yourfile/a/thefileyouwanttogobackto,

donde
1234 es su revisión
4321 es la revisión que desea volver a.

3

Puede hacer una "fusión inversa", es decir, "aplicar" todos los cambios DE su revisión actual A la revisión que desea volver (es decir, deshacer todos los cambios DE la revisión que desea volver a TO revisión).

svn merge -r HEAD:nnnn . 

donde nnnn es la revisión que desea volver a. http://svnbook.red-bean.com/en/1.5/svn.ref.svn.c.merge.html

Después de revisar los cambios, resolver cualquier conflicto, etc., use svn commit para enviar los cambios al depósito.

+0

Sí, gracias zellus, ¡error! He actualizado mi respuesta para reflejar eso. –

+0

http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.undo habla en detalle sobre revertir confirmaciones. – zellus

+0

Dice "no se puede reemplazar un directorio desde dentro" – Woppi

1

Si sabe que cierta revisión que desea revertir aquí es una forma más de revertirla.

svn diff -c r1031 | grep ^Index | awk '{ print $2}' | xargs -I {file} svn export -r 1030 {file} {file} 

Se encuentra todos los archivos cambiados en r1031 y reemplazarlo con los mismos archivos de la revisión 1030.

PS: También por favor, tenga cuidado si los archivos que desea revertir no lo hace presente en 1030. Se probablemente no funcione de la manera que esperabas.

0

Ver esta entrada de blog para más detalles:

http://blog.mafr.de/2008/05/13/revert-a-commit-in-svn/

con un buen fondo explicación:

para entender lo que está pasando aquí requiere algunos antecedentes sobre lo que el comando de combinación hace conceptualmente: Se registros que los cambios tienen que hacerse a revisión N para convertirlo en la revisión N + 1 (llamado un delta) y lo aplica a la copia de trabajo. Eso no es lo que queremos en nuestro escenario , por lo que revertimos el orden habitual de revisiones en la línea de comando . Efectivamente, le decimos al comando merge que cree un delta a la inversa. El resultado es un "rebobinado" de la base de código.

Y también, en los comentarios, cómo hacer esto en TortoiseSVN:

Para hacer esto con TortoiseSVN, haga clic con el directorio o archivo desea revertir y usar “ Merge "del menú TortoiseSVN. Seleccione la opción "Fusionar dos árboles diferentes". En "De", seleccione la revisión Head . Debajo de "A", seleccione la revisión anterior + 1 (es decir,si desea que vuelva a la revisión 169, escriba la revisión 170 en el recuadro).

0

La forma más sencilla se describe en el SVN Book:

$ svn merge -c -303 http://svn.example.com/repos/calc/trunk 

Eso será deshacer los cambios realizados en el conjunto de cambios 303 y puede revisar y comprometerse según sea necesario.

Cuestiones relacionadas