traduccion - svn update to revision
¿Hay alguna forma de recuperarse de un "svn revert" accidental? (10)
Logré pegarme un tiro en el pie esta mañana haciendo lo siguiente:
- Empecé a trabajar en un cambio en mi proyecto
- Hizo un montón de ediciones en un montón de archivos
- Me di cuenta de que mi enfoque era incorrecto y que necesitaba volver a empezar
- cd''d al nivel superior de mi proyecto e hice un "svn --recursive revert". para restaurar mi sandbox local a su estado anterior a los cambios.
- Aullaba de horror cuando me di cuenta de que había una serie de otros cambios pendientes en mi caja de arena local, y los había borrado a todos. (El servidor svn había estado inactivo el viernes pasado, así que no había podido registrarlos, y me había olvidado de ellos durante el fin de semana)
Afortunadamente, en este caso, hice un "svn diff> temp.txt" antes de salir del trabajo el viernes, y el archivo temp.txt todavía estaba en mi disco duro, así que pude alimentar ese archivo en "parche" y recuperar mi cambios perdidos
Pero para mi futura referencia (es decir, la próxima vez que cometo el mismo error tonto) ... ¿hay alguna forma de decirle a svn que deshaga un "svn revert"? ¿Svn mantiene una copia de seguridad de los diffs locales / no registrados en cualquier lugar?
Además, si ha revertido su código .NET (archivos .cs, etc.) y ha creado su aplicación antes de revertirla, pero después de realizar los cambios, puede recuperar los cambios del archivo de ensamblaje utilizando cualquiera de las herramientas de reflector para ver el código.
Hay una solución ... vaya a su papelera de reciclaje donde encontrará la última versión del archivo eliminado. Tortuga "tirando" a la papelera de reciclaje cada archivo que revierte.
No es realmente específico de Subversion, pero si estás trabajando con Eclipse, puedes probar tu suerte en la historia local.
Ahora, algo un poco más específico de Subversion: si no quieres hacer una rama por cada cambio que realices, puedes mantener un par de troncales comprobadas localmente (trunk-modif-1, trunk-modif-2). .). Cada "modificación" se realiza en un árbol separado y solo necesita mantener una lista de lo que corresponde a cada modificación.
O podrías usar Git localmente pero nunca lo intenté.
No puede recuperar los archivos, si está utilizando el cliente de línea de comandos svn .
Pero puede recuperarlos, si está utilizando TortoiseSVN como su cliente svn. TortoiseSVN los moverá automáticamente a su Papelera de reciclaje. Puede restaurarlos desde allí después de una reversión accidental.
Esta es una opción configurable en TortoiseSVN. Está en Configuración -> Diálogo 1 -> Usar papelera de reciclaje al revertir.
Por defecto está marcado, lo que significa que los archivos se mueven a la papelera de reciclaje. Si quieres (la mayoría no te importa deshabilitar esto. Si tienes un motivo, por favor, házmelo saber)
No, (absolutamente) NO .
Si le dices a Subversion que debe revertir un archivo, todos los cambios se han ido por el viento.
Solo tu memoria puede recuperarlos.
Excepción: los archivos nuevos que haya agregado, solo perderán su estado "agregado", pero el archivo permanecerá en este directorio, solo se desconoce el estado ("?")
Excepción de plataforma / software: al utilizar TortoiseSVN en Windows, Revertir primero arroja los archivos a la Papelera de reciclaje y luego los revierte. Puede cavar en la Papelera de reciclaje para recuperar los archivos.
No, SVN no mantiene un registro o copia de seguridad (aunque hay una solución para TortoiseSVN en las otras respuestas).
Pero en caso de que alguien esté navegando por las respuestas y no haya notado este comentario en la pregunta del OP:
"Afortunadamente, en este caso, hice un" svn diff> temp.txt "antes de salir del trabajo el viernes, y el archivo temp.txt todavía estaba en mi disco duro, así que pude alimentar ese archivo en" parche "y recuperarlo mis cambios perdidos ".
Imagino que es un paradigma común hacer ''svn diff'' ANTES de hacer ''svn revert''. Si adquiere el hábito de hacer esto, incluso si el diff se acaba de repetir en la terminal, al menos tiene una vía posible para recuperar sus cambios perdidos.
Revertí la solución (Visual Studio + AnkhSVN) y perdí cambios de pocos archivos. No puedo encontrar el archivo en la papelera de reciclaje.
PERO: Recuperé mis archivos perdidos con Handy Recovery, es decir, SVN simplemente eliminó mis archivos al revertirlos.
Use cualquier software de recuperación de datos para recuperar archivos revertidos (como la versión de prueba de Handy Recovery )
Si está usando InteliJ, entonces es una persona afortunada. En el menú superior, tiene una opción Control de versión, y debajo de ella encontrará la opción de historial local, donde encontrará todo el historial del archivo seleccionado, incluida toda la operación que realizó con ese archivo (actualizar, confirmar, revertir).
Buena suerte, Arkde
Tuve mucha suerte de encontrar un registro local de cambios del archivo (Revisiones locales) en el buscador de historial en Eclipse. Había estado inspeccionando las diferencias una por una y había hecho un par de guardias en el archivo antes de sobrescribir.
Hace poco cometí el error de no realizar nuevos cambios de archivos (unos 10) en SVN y todos desaparecieron debido a mi error tonto. Pero lo que me salvó fue la opción de Windows "Restaurar versiones anteriores" en el menú contextual. Uf, eso fue un alivio y una lección aprendida.