tutorial tortoise revertir español desvincular comandos carpeta cambios svn

tortoise - ¿Mejor forma de volver a una revisión SVN previa de un archivo?



tortoise svn server (9)

Accidentalmente cometí demasiados archivos en un repositorio SVN y cambié algunas cosas que no pretendía. (Suspiro). Para revertirlos a su estado anterior, lo mejor que pude encontrar fue

svn rm l3toks.dtx svn copy -r 854 svn+ssh://<repository URL>/l3toks.dtx ./l3toks.dtx

¡Dios! ¿No hay mejor manera? ¿Por qué no puedo escribir algo como esto?

svn revert -r 854 l3toks.dtx

De acuerdo, solo estoy usando v1.4.4, pero revisé la lista de cambios para la rama 1.5 y no pude ver nada directamente relacionado con esto. ¿Yo me perdí algo?

Edición: supongo que no estaba lo suficientemente claro. ¡No creo que quiera revertir la fusión, porque entonces perderé los cambios que quería hacer! Digamos que fileB y fileB fueron modificados, pero solo quería confirmar fileA ; teclear accidentalmente

svn commit -m "small change"

confirma ambos archivos, y ahora quiero retrotraer el fileB . La fusión inversa hace que esta tarea no sea más fácil (por lo que puedo decir) que los pasos que describí anteriormente.



La fusión inversa es exactamente lo que quieres (ver la respuesta de luapyad). Simplemente aplique la combinación al archivo erróneamente ejecutado en lugar de a todo el directorio.


Lo que estás buscando se llama "fusión inversa". Debería consultar los documentos relacionados con la función de fusión en el libro SVN (como lo señala luapyad, o más precisamente, el primer comentarista de esa publicación). Si está usando Tortoise, también puede ir a la vista de registro y hacer clic con el botón derecho y seleccionar "revertir los cambios de esta revisión" en el lugar donde cometió el error.


Recientemente tuve que volver a una revisión en particular para depurar una versión anterior y esto funcionó como magia:

svn up -r 3340 (or what ever your desired revision number)

Tuve que resolver todos los conflictos usando la opción "tc" ya que no me importaban los cambios locales (revisé todo lo que me preocupaba antes de revertir)

Para volver a la revisión de cabeza también fue simple:

svn up


Si solo desea deshacer la última comprobación, puede usar lo siguiente

svn merge -r head:prev l3toks.dtx

De esta manera, no tienes que buscar los números de versión actuales y anteriores.


Si usa el IDE de Eclipse con el complemento SVN , puede hacer lo siguiente:

  1. Haga clic con el botón derecho en los archivos que desea revertir (o en la carpeta en la que estaban contenidos, si los eliminó por error y desea volver a agregarlos)
  2. Seleccione " Equipo> Cambiar "
  3. Elija el botón radion "Revisión" e ingrese el número de revisión al que desea volver. Haga clic en Aceptar
  4. Ir a la perspectiva Sincronizar
  5. Seleccione todos los archivos que desea revertir
  6. Haga clic con el botón derecho en la selección y haga " Anular y confirmar ... "

Esto revertirá los archivos a la revisión que desee. Solo tenga en cuenta que SVN verá los cambios como una nueva confirmación. Es decir, el cambio obtiene un nuevo número de revisión y no existe un vínculo entre la revisión anterior y la nueva. Debe especificar en los comentarios de confirmación que está revertiendo esos archivos a una revisión específica.


siento utilizar un poco de espacio en solo una reiteración de la respuesta dada anteriormente, pero esto es algo con lo que siempre termino teniendo problemas.

Digamos que actualicé los archivos locales a la última revisión, que es 854. Entonces, me gustaría obtener una revisión anterior: la versión del archivo de algunas revisiones anteriores, digamos la revisión 851.

La copia funcionaría:

svn copy -r 851 svn+ssh://<repository URL>/l3toks.dtx ./l3toks.dtx

.. sin embargo, no me puede molestar grepping para la URL del repositorio :)

La actualización aparentemente podría funcionar:

svn up -r 851 ./l3toks.dtx

... sin embargo, también marca la copia local como "recién revisada", o más bien "igual que la revisión en línea" (es decir, en Tortoise / RabbitVCS obtienes una marca verde OK) - lo que significa que no puedes hacer svn ci -m "rolled back to r 851" : simplemente porque el ejecutable local de subversion no notará ningún cambio local y no se molestará en cargar nada al repositorio en línea.

Y, como ya se respondió, la fusión inversa funciona, pero en este caso, uno no debe confiar en la sintaxis de acceso directo; pero específicamente declara:

svn merge -r HEAD:851 l3toks.dtx --- Reverse-merging r854 through r852 into ''l3toks.dtx'': U l3toks.dtx

Debo admitir que nunca entendería la frase " Invertir-fusión de r854 a r852 en archivo " para significar " Acabo de recibir el r851 de su archivo, y sobrescribí lo que tenía previamente localmente" y está marcado como diferente de la última revisión en línea, por lo que puedes revisarlo en línea como una nueva revisión ''rollback'' , pero supongo (y espero :)) que es lo que hace :)

Después de esto, uno puede usar svn diff para una confirmación rápida si recuperamos la revisión correcta localmente; y también, el archivo se marcará con un signo de exclamación rojo en Tortoise / RabbitVCS (es decir, diferente de la última versión confirmada), por lo que svn ci -m "rolled back to r 851" puede ejecutarse esta vez.

Además, tenga en cuenta que, si finalmente cambia de parecer después de la fusión inversa ( es decir, siempre quiere seguir trabajando en la última revisión de HEAD, aquí, 854, después de que haya retrocedido al 851 localmente, pero aún no haya cometido la reversión ), no debería usar svn up , porque simplemente dirá que ya está " En la revisión 854 "; use en su lugar svn revert --recursive . o similar...

¡Aclamaciones!

Ref: Cómo deshacer los cambios usando Subversion - Jacob Wright - Flex, AIR, PHP, etc.

EDITAR: ... y aparentemente, el mismo efecto que svn merge -r HEAD:851 l3toks.dtx , se puede lograr con:

svn export -r 851 l3toks.dtx A l3toks.dtx Export complete.


svn merge fusionará revisiones, no las revertirá. es decir, si tiene alguna adición en su versión HEAD y la combina con una revisión anterior, entonces el cambio persistirá.

Yo uso svn cat y luego lo redirijo al archivo:

svn cat -r 851 l3toks.dtx > l3toks.dtx

Luego tiene el contenido 851 en ese archivo y puede verificarlo nuevamente.


svn merge -r 854:853 l3toks.dtx

o

svn merge -c -854 l3toks.dtx

Los dos comandos son equivalentes .