Soy nuevo en Mercurial. Simplemente no puedo encontrar el comando correcto. Intenté actualizar / pagar sin suerte. Estoy usando un repositorio local. Gracias
Soy nuevo en Mercurial. Simplemente no puedo encontrar el comando correcto. Intenté actualizar / pagar sin suerte. Estoy usando un repositorio local. Gracias
Respuestas:
Creo que quieres hg revert -r<rev> <file>
(esto cambiará ese archivo para que sea como estaba en la revisión dada).
Como dijo djc, revert
modifica un archivo en su lugar para que coincida con una revisión anterior. Si no desea que esté en su lugar, puede usar hg cat -r revisionid filename
(sustituyendo el ID de revisión y el nombre de archivo, por supuesto) que generará el archivo en la salida estándar, adecuado para redirigir a cualquier lugar que desee.
hg revert
de hecho resuelve este problema. Pero creo que está confundido acerca de una gama más amplia de cosas que simplemente la respuesta a su pregunta y quiere intentar responder de manera más completa.
hg update
es un comando de repositorio completo y no funcionará en archivos individuales. Es diferente a la subversión svn update
en este sentido. Si lo hace hg --help update
, puede ver que este es el caso porque el comando no tiene ningún argumento de archivo. Se puede usar para mover todo su repositorio a una instantánea en particular, pero no se puede usar para hacerlo en un solo archivo.
Si escribe hg --help
, verá una lista de comandos. Es una lista bastante grande y algo abrumadora, pero si la lee, encontrará esta línea:
revert restore individual files or directories to an earlier state
Ahora, si solo desea el último estado para fines de comparación, hay otro comando que puede interesarle, y ese es hg cat
. Eso le permitirá imprimir el contenido de un archivo en cualquier revisión en particular. Luego puede redirigir su salida a otro archivo. Luego, puede tener la versión anterior conocida de su archivo y la versión anterior para compararlas una al lado de la otra.
La razón por la que Mercurial tiene un update
comando separado es que es posible hacer algo en Mercurial que es imposible en Subversion. Puede utilizar update
una versión anterior, realizar cambios y luego confirmar. Esto creará una rama. El update
comando también tiene el efecto de cambiar la revisión principal del directorio de trabajo actual, así como también cambiar el contenido de todos los archivos en ese directorio a las versiones de esa revisión principal.
Eso significa que revert
cambia el contenido de un archivo (o incluso todo el repositorio si le da al comando los argumentos correctos) pero deja la revisión principal de la copia de trabajo actual igual.
Puede averiguar la revisión principal (o revisiones en el caso de una fusión) de la copia de trabajo actual usando el hg parents
comando.
En Subversion, las revisiones son una progresión estrictamente lineal. Mercurial crea ramas en un abrir y cerrar de ojos, y son casi tan fáciles de fusionar. Las revisiones forman un DAG, no una progresión estrictamente lineal.
Para extraer una revisión específica de un archivo específico, puede hacer esto en Windows:
hg cat "<FileToBeExtractedPath>" -r 9 > "<ExtractionPath>"
Aquí, 9 es el número de revisión.
O mejor:
hg cat "<FileToBeExtractedPath>" -r 9 -o "<ExtractionPath>"