two tortoise create crear branches svn revert

tortoise - ¿Cómo puedo revertir una confirmación SVN?



tortoise merge (12)

Alex, prueba esto: svn merge [WorkingFolderPath] -r 1944: 1943

He encontrado varios ejemplos de cómo revertir un compromiso SVN como

svn merge -r [current_version]:[previous_version] [repository_url]

o

svn merge -c -[R] .

Pero ninguno de los dos parece funcionar. Probé esos comandos y verifiqué los archivos que fueron cambiados a mano.

¿Cómo revertir una confirmación con el número de revisión 1944? ¿Cómo compruebo que se haya realizado la reversión (sin mirar en el archivo real los cambios se han revertido)?


Ambos ejemplos deben funcionar, pero

svn merge -r UPREV:LOWREV . rango de deshacer

svn merge -c -REV . deshacer una sola revisión

en esta sintaxis: si el directorio actual es WC y (como debe hacerse después de cada fusión), confirmará los resultados

¿Quieres ver los registros?


Es imposible "anular" una revisión, pero puede revertir su copia de trabajo a la versión 1943 y confirmarla como versión 1945. Las versiones 1943 y 1945 serán idénticas y revertirán efectivamente los cambios.


Intenté lo anterior, ( svn merge ) y tienes razón, lo hace jack. sin embargo

svn update -r <revision> <target> [-R]

parece funcionar, pero no es permanente (mi svn simplemente muestra una revisión anterior). Así que tuve que

mv <target> <target backup> svn update <target> mv <target backup> <target> svn commit -m "Reverted commit on <target>" <target>

En mi caso particular, mi objetivo es interfaces/AngelInterface.php . Hice cambios en el archivo, los confirmé, actualicé la computadora de compilación, ejecuté el compilador phpdoc y descubrí que mis cambios eran una pérdida de tiempo. svn log interfaces/AngelInterface.php muestra mi cambio como r22060 y la confirmación anterior en ese archivo fue r22059. Entonces puedo svn update -r 22059 interfaces/AngelInterface.php y termino con el código como estaba en -r22059 de nuevo. Entonces :-

mv interfaces/AngelInterface.php interfaces/AngelInterface.php~ svn update interfaces/AngelInterface.php mv interfaces/AngelInterface.php~ interfaces/AngelInterface.php svn commit -m "reverted -r22060" interfaces/AngelInterface.php

Alternativamente, podría hacer lo mismo en un directorio, especificando . -R . -R en lugar de interfaces/AngelInterface.php en todo lo anterior.


Lo siguiente hará un recorrido en seco, como dice. HEAD es la versión actual, PREV es anterior, luego la ruta a su archivo o elemento confirmado:

svn merge --dry-run -rHEAD:PREV https://example.com/svn/myproject/trunk

Si la ejecución en seco se ve bien, ejecute el comando sin la ejecución --dry-run

Verifique el cambio en la revisión y vuelva a confirmar. Para buscar números de versión, intente:

svn log


Primero, revertir la copia de trabajo a 1943.

> svn merge -c -1943 .

En segundo lugar, verifique qué está a punto de ser comprometido.

> svn status

Tercero, cometer la versión 1945.

> svn commit -m "Fix bad commit."

Cuarto, mira el nuevo registro.

> svn log -l 4 ------------------------------------------------------------------------ 1945 | myname | 2015-04-20 19:20:51 -0700 (Mon, 20 Apr 2015) | 1 line Fix bad commit. ------------------------------------------------------------------------ 1944 | myname | 2015-04-20 19:09:58 -0700 (Mon, 20 Apr 2015) | 1 line This is the bad commit that I made. ------------------------------------------------------------------------ 1943 | myname | 2015-04-20 18:36:45 -0700 (Mon, 20 Apr 2015) | 1 line This was a good commit. ------------------------------------------------------------------------


Si bien las sugerencias dadas ya pueden funcionar para algunas personas, no funciona para mi caso. Al realizar la combinación, los usuarios de la rev 1443 que actualizaron a la rev 1445 , aún sincronizan todos los archivos modificados en 1444 , aunque son iguales a 1443 de la combinación. Necesitaba que los usuarios finales no vieran la actualización en absoluto.

Si desea ocultar completamente el compromiso, es posible creando una nueva rama en la revisión correcta y luego intercambiando las ramas. Lo único es que necesitas eliminar y volver a agregar todos los bloqueos.

copy -r 1443 file:///<your_branch> file:///<your_branch_at_correct_rev> svn move file:///<your_branch> file:///<backup_branch> svn move file:///<your_branch_at_correct_rev> file:///<your_branch>

Esto funcionó para mí, quizás sea útil para alguien más por ahí =)


Si desea eliminar completamente las confirmaciones del historial, también puede hacer un volcado del repositorio en una revisión específica y luego importar ese volcado. Específicamente:

svnrdump dump -r 1:<rev> <url> > filename.dump

El comando svnrdump realiza la misma función que svnadmin dump pero funciona en un repositorio remoto.

A continuación, simplemente importe el archivo de volcado en el repositorio de su elección. Esto fue probado para funcionar bien en Beanstalk.



svn merge -r 1944:1943 . Debería revertir los cambios de r1944 en su copia de trabajo. Luego puede revisar los cambios en su copia de trabajo (con diff), pero tendría que confirmar para aplicar el revertir en el repositorio.


F=code.c REV=123 svn diff -c $REV $F | patch -R -p0 / && svn commit -m "undid rev $REV" $F


svn merge -c -M PATH

Esto me salvó la vida.

Estaba teniendo el mismo problema, después de volver también no estaba viendo el código antiguo. Después de ejecutar el comando anterior obtuve un código de versión anterior limpio.