2010-08-30 11 views
33

¿Cómo se obtiene una copia de una revisión anterior de un archivo en Mercurial sin hacer que la nueva copia de trabajo predeterminada del archivo en su área de trabajo?Recuperar la versión anterior de un archivo sin cambiar el padre de copia de trabajo

He encontrado el comando hg revert y creo que hace lo que quiero, pero no estoy seguro.

Necesito obtener una copia de una revisión anterior de mi código para trabajar durante unos minutos. Pero no quiero molestar a la versión actual que funciona bien.

así que iba a hacer esto:

hg revert -r 10 myfile.pls 

¿Hay una manera de salida en un directorio diferente por lo que mi versión de trabajo actual del archivo no se ve perturbado? Algo así como:

hg revert -r 10 myfile.pls > c:\temp\dump\myfile_revision10.pls 

Respuesta

49

El cat command se puede utilizar para recuperar cualquier revisión de un archivo:

$ hg cat -r 10 myfile.pls 

puede redirigir la salida a otro archivo con

$ hg cat -r 10 myfile.pls > old.pls 

o mediante el uso de la bandera --output. Si necesita hacer esto durante varios archivos, a continuación, echar un vistazo a la archive command, lo que puede hacer esto para un proyecto completo, por ejemplo,

$ hg archive -r 10 ../revision-10 

Esto crea la carpeta revision-10 que contiene una instantánea de su repositorio tal y como mirado en la revisión 10.

Sin embargo, la mayoría de las veces se debe apenas utilizar el update command a la caja de una revisión anterior. La actualización es el comando que utiliza para actualizar la copia de trabajo después de introducir nuevos cambios, pero el comando también se puede usar para hacer que su copia de trabajo caduque si es necesario. Entonces

$ hg update -r 10 # go back 
(look at your files, test, etc...) 
$ hg update   # go back to the tip 
+0

Gracias por la útil y * concisa * descripción de 'update'! Estaba un poco nervioso antes de usar el comando de actualización (como suponía Coriolanus). –

9

El comando que se utiliza es la siguiente:

hg cat -r 10 myfile.pls > C:\temp\dump\myfile_revision10.pls 

Conociendo un poco de ayuda con los comandos de Unix mercuriales. Tal vez cat debe tener un alias print incorporado o algo similar.

Cuestiones relacionadas