tutorial tortoise subversion repositorio funciona español desvincular crear como carpeta svn tortoisesvn restore

tortoise - svn windows



¿Cuál es la forma correcta de restaurar un archivo eliminado de SVN? (9)

Con Tortoise SVN :

Si aún no ha confirmado los cambios, puede revertir en la carpeta principal donde eliminó el archivo o directorio.

Si ya ha confirmado el archivo borrado, puede usar el navegador de repositorio, cambiar a la revisión donde todavía existía el archivo y luego usar el comando Copiar a ... del menú contextual. Ingrese la ruta a su copia de trabajo ya que el objetivo y el archivo eliminado se copiarán del repositorio a su copia de trabajo.

Eliminé un archivo de un repositorio y ahora quiero volver a colocarlo. Lo mejor que puedo descubrir es:

  • actualizar a la revisión antes de la eliminación
  • copiar los archivos en otra parte
  • actualizar a la cabeza
  • copia los archivos de vuelta
  • Agregalos
  • cometer

Eso huele mal y pierde toda la historia para arrancar. Tiene que haber una mejor manera de hacer esto. Ya busqué en el Libro SVN pero no encontré nada y ahora estoy mirando la lista de etiquetas de SVN.


Debería poder verificar el único archivo que desea restaurar. Pruebe algo como svn co svn://your_repos/path/to/file/you/want/to/restore@rev donde rev es la última revisión en la que existió el archivo.

Tuve que hacer exactamente esto hace un rato y si mal no recuerdo, usar la opción -r para svn no funcionó; Tuve que usar la sintaxis :rev . (Aunque podría haberlo recordado al revés ...)


El problema de hacer una combinación de svn como lo sugiere Sean Bright es que reintroduce otros cambios realizados en la misma revisión que la eliminación. Una copia de svn es una operación más específica que solo afectará a los archivos eliminados.

Usando Tortoise SVN puede resucitar un archivo que ha sido eliminado de su directorio de copia de trabajo y de posteriores revisiones de SVN, a través de una copia svn de la siguiente manera:

  • Busque la carpeta de copia de trabajo que anteriormente contenía el archivo.
  • Haga clic derecho en la carpeta en el Explorador, vaya a TortoiseSVN -> Mostrar registro.
  • Haga clic derecho en el número de revisión justo antes de la revisión que eliminó el archivo y seleccione "Buscar repositorio".
  • Haga clic derecho en el archivo eliminado y seleccione "Copiar a la copia de trabajo ..." y guarde.

El archivo eliminado ahora estará en la carpeta de copia de trabajo. Para volver a agregarlo a SVN, haga clic con el botón derecho en el archivo restaurado y seleccione Commit SVN.

NB: Este método preservará el historial anterior del archivo restaurado; sin embargo, para ver el historial anterior en el registro de TortoiseSVN, debe asegurarse de que "Detener al copiar / cambiar el nombre" esté desactivado en el cuadro de diálogo Registrar mensajes.


La forma más fácil en que pude restaurar los archivos y no perder el historial de revisión es usando una copia de SVN , el ejemplo de fusión anterior me parece una forma más compleja de lograr lo mismo. ¿Por qué hay una necesidad de fusionarse cuando simplemente quiere restaurar una revisión?

Uso lo siguiente en esta instancia y funciona bastante bien.

svn copy -m ''restoring file'' -r <rev_number_file_to_restore> http://from/file.cs http://pathTo/file.cs

Siempre uso svn copy como una operación de servidor, por lo que no estoy seguro de si funciona con dos rutas de trabajo.



Si está utilizando Tortoise SVN, debería poder revertir los cambios de esa revisión a su copia de trabajo (realizando de manera efectiva una fusión inversa), y luego hacer otra confirmación para volver a agregar el archivo. Los pasos a seguir son:

  1. Busque la carpeta en la copia de trabajo donde borró el archivo.
  2. Ir a repo-navegador.
  3. Busque la revisión donde eliminó el archivo.
  4. En la lista de cambios, encuentre el archivo que eliminó.
  5. Haga clic derecho en el archivo y vaya a "Revertir cambios de esta revisión".
  6. Esto restaurará el archivo a su copia de trabajo, manteniendo el historial.
  7. Confirme el archivo para volver a agregarlo a su repositorio.

Siempre uso svn copy como una operación de servidor, por lo que no estoy seguro de si funciona con dos rutas de trabajo.

Aquí hay un ejemplo de cómo restaurar un archivo eliminado en una copia de trabajo local del proyecto:

svn copy https://repos/project/modules/module.js@3502 modules/module.js

Mientras está dentro del directorio del proyecto. Esto también funciona para restaurar directorios completos.


Use la funcionalidad de copia SVN de Tortoise para revertir los cambios realizados:

  1. Haga clic con el botón derecho en la carpeta principal que contiene los archivos / carpetas eliminados
  2. Seleccione el "registro de muestra"
  3. Seleccione y haga clic derecho sobre la versión antes de la cual se realizaron los cambios / borrados
  4. Seleccione el "repositorio de exploración"
  5. Seleccione el archivo / carpeta que necesita restaurarse y haga clic con el botón derecho
  6. Seleccione "copiar a", que copiará los archivos / carpetas a la revisión principal

Espero que ayude


Use svn merge:

svn merge -c -[rev num that deleted the file] http://<path to repository>

Entonces un ejemplo:

svn merge -c -12345 https://svn.mysite.com/svn/repo/project/trunk ^ The negative is important

Para TortoiseSVN (creo ...)

  • Haga clic con el botón derecho en Explorer, vaya a TortoiseSVN -> Fusionar ...
  • Asegúrese de que esté seleccionado "Fusionar un rango de revisiones", haga clic en Siguiente
  • En el cuadro de texto "Alcance de revisión para fusionar", especifique la revisión que eliminó el archivo
  • Marca la casilla de verificación "Invertir combinación", haz clic en Siguiente
  • Haz clic en Combinar

Eso es completamente no probado, sin embargo.

Editado por OP : Esto funciona en mi versión de TortoiseSVN (el tipo anterior sin el siguiente botón)

  • Ve a la carpeta que las cosas fueron desacreditadas de
  • Haga clic con el botón derecho en Explorer, vaya a TortoiseSVN -> Fusionar ...
  • en la sección Desde , ingrese la revisión que eliminó
  • en la sección A , ingrese la revisión antes de la eliminación.
  • Haga clic en "fusionar"
  • cometer

El truco es fusionarse hacia atrás . Felicitaciones a sean.bright por señalarme en la dirección correcta!

Editar: estamos usando diferentes versiones. El método que describí funcionó perfectamente con mi versión de TortoiseSVN.

También debe tenerse en cuenta que si hubo varios cambios en la confirmación, se fusionará de forma inversa, querrá revertir esos otros cambios una vez que la fusión se haya completado antes de comprometerse. Si no lo hace, esos cambios adicionales también se revertirán.