Eliminé un archivo de un repositorio y ahora quiero volver a colocarlo. Lo mejor que puedo averiguar es:
- actualizar a la revisión antes de la eliminación
- copiar los archivos en otro lugar
- actualizar a la cabeza
- copia los archivos de nuevo
- Agregalos
- cometer
Eso simplemente huele mal y, para empezar, pierde toda la historia. Tiene que haber una mejor manera de hacer esto. Ya busqué en The SVN Book pero no encontré nada y ahora estoy buscando en la lista de etiquetas SVN.
svn
tortoisesvn
restore
BCS
fuente
fuente
Respuestas:
Utilice svn merge:
Entonces un ejemplo:
Para TortoiseSVN (creo ...)
Sin embargo, eso está completamente sin probar.
Editado por OP : esto funciona en mi versión de TortoiseSVN (el tipo antiguo sin el botón siguiente)
El truco consiste en fusionar al revé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 es de destacar que si hubo varios cambios en la confirmación, está fusionando en reversa, querrá revertir esos otros cambios una vez que la fusión se haya realizado antes de realizar la confirmación. Si no lo hace, esos cambios adicionales también se revertirán.
fuente
El problema de hacer una fusión de svn como sugirió Sean Bright es que reintroduce otros cambios realizados en la misma revisión que la eliminación. Una copia 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 revisiones posteriores de SVN, a través de una copia svn de la siguiente manera:
El archivo eliminado ahora estará en la carpeta de copia de trabajo. Para volver a agregarlo a SVN, haga clic derecho en el archivo restaurado y seleccione SVN Commit.
NB: Este método conservará 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 / renombrar" no esté marcado en el cuadro de diálogo Mensajes de registro.
fuente
svn cp -r 1993 http://example.com/svn/trunk/path@1993 http://example.com/svn/trunk/path
merge
, pero no lo descubrí.Para completar, esto es lo que habría encontrado en el libro svn, si hubiera sabido qué buscar. Es lo que ya has descubierto:
Deshaciendo cambios
Resucitar elementos eliminados
Lo mismo, de la versión más reciente (y detallada) del libro:
Deshaciendo cambios
Resucitar elementos eliminados
fuente
Utilice la función de copia de Tortoise SVN para revertir los cambios confirmados:
Espero que ayude
fuente
Parece que siempre uso svn copy como una operación de servidor, así que no estoy seguro de si funciona con dos rutas de trabajo.
A continuación se muestra un ejemplo de cómo restaurar un archivo eliminado en una copia de trabajo local del proyecto:
Mientras está dentro del directorio del proyecto. Esto también funciona para restaurar directorios completos.
fuente
Si está utilizando Tortoise SVN, debería poder revertir los cambios de esa revisión a su copia de trabajo (realizando efectivamente una fusión inversa), luego haga otra confirmación para volver a agregar el archivo. Los pasos a seguir son:
fuente
La forma más fácil en la que he podido restaurar archivos y no perder el historial de revisión es usando la copia SVN , el ejemplo de fusión anterior me parece una forma más compleja de lograr lo mismo. ¿Por qué es necesario fusionar cuando simplemente desea restaurar una revisión?
Utilizo lo siguiente en este caso y funciona bastante bien.
Parece que siempre lo uso
svn copy
como una operación de servidor, por lo que no estoy seguro de si funciona con dos rutas de trabajo.fuente
Con Tortuga SVN :
fuente
Debería poder ver el único archivo que desea restaurar. Pruebe algo como
svn co svn://your_repos/path/to/file/you/want/to/restore@rev
dónderev
está la última revisión en la que existía el archivo.Tuve que hacer exactamente esto hace un tiempo y, si no recuerdo mal, usar la
-r
opciónsvn
no funcionó; Tuve que usar la:rev
sintaxis. (Aunque podría haberlo recordado al revés ...)fuente