He encontrado varios ejemplos de cómo revertir una confirmación SVN como
svn merge -r [current_version]:[previous_version] [repository_url]
o
svn merge -c -[R] .
Pero ninguno de ellos parece funcionar. Probé esos comandos y verifiqué los archivos que se cambiaron a mano.
¿Cómo revierto un commit con el número de revisión 1944? ¿Cómo verifico que se haya realizado la reversión (sin mirar en el archivo real que se han revertido los cambios)?
Respuestas:
Ambos ejemplos deben funcionar, pero
svn merge -r UPREV:LOWREV .
rango de deshacersvn merge -c -REV .
deshacer una sola revisiónen esta sintaxis: si el directorio actual es WC y (como se debe hacer después de cada fusión), confirmará los resultados
¿Quieres ver registros?
fuente
svn: Merge source required
. No dados.svn merge -c -42587,-42589 .
Si está utilizando el cliente TortoiseSVN , se hace fácilmente a través del cuadro de diálogo Mostrar registro .
fuente
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 necesitaría confirmar para aplicar la reversión en el repositorio.fuente
svn merge -r 1944:1943 .
cambio, pero nada ha cambiado.svn status
nisvn diff
da nada.svn: Try 'svn help' for more info svn: Merge source required
svn merge -r 1945:1943 .
parece haber funcionado. Creo que entiendo: debe fusionar la versión de 'antes' de la confirmación 'mala' en su repositorio de trabajo. Esto está bien cuando quieres hacer una simple "reversión" de la confirmación anterior. Pero, ¿qué sucede si desea revertir los cambios realizados con la versión 1900?Primero, revierta la copia de trabajo a 1943.
En segundo lugar, verifique qué se va a cometer.
Tercero, comprometer la versión 1945.
Cuarto, mira el nuevo registro.
fuente
Es imposible "cancelar" una revisión, pero puede revertir su copia de trabajo a la versión 1943 y confirmarla como la versión 1945. Las versiones 1943 y 1945 serán idénticas, revertiendo efectivamente los cambios.
fuente
svn dump
y luegosvn load
. Pero, por supuesto, esto no debe usarse en circunstancias normales.$ git revert
. Me resultó algo difícil aprender SVN después de usar Git durante tanto tiempo.Lo siguiente hará una carrera en seco, como dice. HEAD es la versión actual, PREV es anterior, luego la ruta a su archivo o elemento confirmado:
Si la ejecución en seco se ve bien, ejecute el comando sin --dry-run
Verifique el cambio en la revisión y vuelva a confirmar. Para buscar números de versión, intente:
fuente
fuente
Alex, prueba esto: svn merge [WorkingFolderPath] -r 1944: 1943
fuente
Si bien las sugerencias dadas ya pueden funcionar para algunas personas, no funciona para mi caso. Al realizar la fusión, los usuarios en los
rev 1443
que se actualizarev 1445
, aún sincronizan todos los archivos modificados1444
aunque sean iguales a los1443
de la fusión. Necesitaba que los usuarios finales no vieran la actualización en absoluto.Si desea ocultar completamente la confirmación, es posible creando una nueva rama en la revisión correcta y luego intercambiando las ramas. Lo único es que necesita eliminar y volver a agregar todos los bloqueos.
Esto funcionó para mí, tal vez sea útil para alguien más por ahí =)
fuente
Esto me salvó la vida.
Estaba teniendo el mismo problema, después de volver atrás también no veía el código antiguo. Después de ejecutar el comando anterior, obtuve un código de versión anterior limpio.
fuente
Intenté lo anterior, (
svn merge
) y tienes razón, hace jack. sin embargoparece funcionar, pero no es permanente (mi svn simplemente muestra una revisión anterior). Entonces tuve que
En mi caso particular, mi objetivo es
interfaces/AngelInterface.php
. Hice cambios en el archivo, los comprometí, 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 puedosvn update -r 22059 interfaces/AngelInterface.php
y termino con el código como estaba en -r22059 nuevamente. Luego :-Alternativamente, podría hacer lo mismo en un directorio, especificando
. -R
en lugar deinterfaces/AngelInterface.php
todo lo anterior.fuente
Si desea eliminar por completo las confirmaciones del historial, también puede hacer un volcado del repositorio en una revisión específica, luego importar ese volcado. Específicamente:
El comando svnrdump realiza la misma función que svnadmin dump pero funciona en un repositorio remoto.
A continuación, solo importe el archivo de volcado en el repositorio de su elección. Esto fue probado para funcionar bien en Beanstalk.
fuente