subversion - Revertir un solo archivo en SVN a una revisión en particular
tortoisesvn español (11)
Tengo un archivo como se muestra a continuación en un repositorio SVN que me gustaría volver a una versión anterior. ¿Cuál es la manera de hacer esto en SVN? Solo quiero degradar este archivo en particular a una versión anterior, no a todo el repositorio.
Gracias.
$ svn log myfile.py
----------------------
r179 | xx | 2010-05-10
Change 3
----------------------
r175 | xx | 2010-05-08
Change 2
----------------------
r174 | xx | 2010-05-04
Initial
Descubrí que es simple hacerlo a través del comando svn cat
para que no tenga que especificar una revisión.
svn cat mydir/myfile > mydir/myfile
Esto probablemente no respaldará los datos de inodos (metadatos) tales como las marcas de tiempo.
Hasta ahora, todas las respuestas aquí parecen tener desventajas significativas, son complicadas (necesitan encontrar el URI del repositorio) o no hacen lo que la pregunta probablemente se haya formulado: cómo volver a poner en funcionamiento el Repo con esa versión anterior del archivo .
svn merge -r head:[revision-number-to-revert-to] [file-path]
es IMO la forma más limpia y simple de hacer esto. Tenga en cuenta que traer de vuelta un archivo eliminado no parece funcionar de esta manera [1]. Consulte también la siguiente pregunta: ¿ Mejor forma de volver a una revisión SVN anterior de un archivo?
[1] Para eso quieres svn cp -r [rev-number] [repo-URI/file-path]@[rev-number] [repo-URI/file-path] && svn up
, ver también What is the correct forma de restaurar un archivo eliminado de SVN?
La mejor manera es:
svn merge -c -RevisionToUndo ^/trunk
Esto deshará todos los archivos de la revisión que simplemente revertirá esos archivos que no desea deshacer. No olvides el guion ( -
) como prefijo para la revisión.
svn revert File1 File2
Ahora confirma los cambios.
Para un solo archivo, puede hacer:
svn export -r <REV> svn://host/path/to/file/on/repos file.ext
Puedes hacer svn revert <file>
pero eso solo restaurará la última copia de trabajo.
Quieres hacer
svn merge -r [revision to revert from]:[revision to revert to] [path/filename]
Una vez que haga eso, tendrá esa revisión del archivo en un estado comprometible. Confirmar el archivo
Si solo quiere el archivo anterior en su copia de trabajo:
svn up -r 147 myfile.py
Si desea deshacer, consulte este " ¿Cómo volver a una versión anterior de nuestro código en subversión? ".
Si solo se trata de un par de archivos, y si está utilizando Tortoise SVN, puede usar el siguiente enfoque:
- Haga clic derecho en su archivo fuente y seleccione "TortoiseSVN" -> "Mostrar registro".
- Haga clic derecho en una revisión en el registro, y seleccione "Guardar revisión en ...".
- Permita que la revisión anterior sobrescriba su archivo actual.
- Confirme el archivo fuente sobrescrito.
Solo agregué a @Mitch Dempsy la respuesta ya que todavía no tengo suficientes representantes para comentar.
svn export -r <REV> svn://host/path/to/file/on/repos --force
Al agregar la opción --force sobrescribirá la copia local con la exportación y luego puede hacer una confirmación svn para enviarla al repositorio.
sorprendido, nadie mencionó esto
sin averiguar el número de revisión podría escribir esto, si acaba de comprometer algo que desea revertir, esto no funcionará si cambió algún otro archivo y el archivo de destino no es el último archivo cambiado
svn merge -r PREV:HEAD file
svn cat toma una revisión arg también!
svn cat -r 175 mydir/myfile > mydir/myfile
svn revert filename
esto debería revertir un solo archivo.