La mayoría de las respuestas anteriores han estado utilizando una combinación inversa, y esa suele ser la respuesta correcta. Sin embargo, hay una situación (que me acaba de ocurrir) en la que no está.
Accidentalmente cambié un archivo con terminaciones de línea Unix a terminaciones de línea DOS al hacer un pequeño cambio, y lo confirmé. Esto se deshace fácilmente, ya sea cambiando los finales de línea y confirmando nuevamente, o mediante una fusión inversa, pero tiene el efecto de hacer que la svn blame
lista de mi edición sea la fuente de cada línea del archivo. (Curiosamente, TortoiseSVN en Windows no se ve afectado por esto; solo la línea de comando svn blame
).
Si desea mantener el historial según lo informado por svn blame
, creo que debe hacer lo siguiente:
- Eliminar el archivo y confirmar.
- En el repositorio, copie la copia buena anterior del archivo en el encabezado y confirme.
- Restaure cualquier edición que desee conservar.
La eliminación da un poco de miedo, pero recuerda que siempre tienes el archivo guardado en el repositorio, por lo que restaurarlo no es gran cosa. Aquí hay un código para ilustrar los pasos. Suponga que xxx
es el número de revisión de la última copia válida.
svn rm svn+ssh://path/to/file
svn copy svn+ssh://path/to/file@xxx svn+ssh://path/to -m"Restore good copy"
svn update
<restore the edits>
svn commit -m"Restore edits"
Tenga en cuenta que para una copia en el repositorio, el destino debe ser un directorio, no un nombre de archivo.