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 forma de hacer esto en SVN? Solo quiero degradar este archivo en particular a una versión anterior, no 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
Respuestas:
Si solo desea el archivo antiguo en su copia de trabajo:
Si desea revertir, consulte " ¿Cómo volver a una versión anterior de nuestro código en subversion? ".
fuente
¡svn cat también tiene una revisión arg!
svn cat -r 175 mydir/myfile > mydir/myfile
fuente
Esto debería revertir un solo archivo.
fuente
Para un solo archivo, podría hacer:
svn export -r <REV> svn://host/path/to/file/on/repos file.ext
Podría hacerlo,
svn revert <file>
pero eso solo restaurará la última copia de trabajo.fuente
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 preguntó: Cómo volver a poner el Repo en un estado de funcionamiento con esa versión anterior del archivo .
svn merge -r head:[revision-number-to-revert-to] [file-path]
OMI es la forma más limpia y sencilla de hacer esto. Tenga en cuenta que traer de vuelta un eliminado archivo no parece funcionar de esta manera [1]. Consulte también la siguiente pregunta: ¿ Mejor manera de volver a una revisión SVN anterior de un archivo?[1] Para lo que desea
svn cp -r [rev-number] [repo-URI/file-path]@[rev-number] [repo-URI/file-path] && svn up
, consulte también ¿Cuál es la forma correcta de restaurar un archivo eliminado de SVN?fuente
svn merge
no toma varios archivos como argumento por alguna razón. En este caso, parece no hacer nada (sin un mensaje de error).La mejor manera es:
Esto deshacerá todos los archivos de la revisión que simplemente revierte aquellos archivos que no desea deshacer. No olvide el guión (
-
) como prefijo para la revisión.Ahora confirme los cambios.
fuente
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
fuente
Descubrí que es simple hacer esto a través del
svn cat
comando para que ni siquiera tenga que especificar una revisión.Esto probablemente no hará retroceder los datos de inodo (metadatos) como las marcas de tiempo.
fuente
sorprendido de que nadie mencionó esto
sin averiguar el número de revisión, podría escribir esto, si acaba de confirmar algo que desea revertir, esto no funcionará si cambió algún otro archivo y el archivo de destino no es el último archivo cambiado
fuente
svn merge -r HEAD:PREV file
como @Nick Russo dijoSi solo se trata de un par de archivos, y si está utilizando Tortoise SVN, puede utilizar el siguiente enfoque:
fuente
Solo agrego a la respuesta de @Mitch Dempsy ya que aún no tengo suficiente representante para comentar.
Al agregar --force se sobrescribirá la copia local con la exportación y luego puede hacer una confirmación svn para enviarla al repositorio.
fuente
Una opción alternativa para un solo archivo es "reemplazar" la versión actual del archivo con la revisión anterior:
Esto tiene la característica adicional de que los cambios no deseados no se muestran en el registro de este archivo (es decir, svn log file.ext).
fuente
Si desea revertir un archivo individual de una revisión específica y poder confirmar, entonces:
svn merge -c - [OldRev #] [Nombre de archivo]
es decir.
svn merge -c -150 myfile.py
Tenga en cuenta lo negativo en el número de revisión
fuente
fuente