2010-01-18 10 views
7

Digamos que clono un repositorio remoto de Mercurial (a través de la red local o incluso a través de Internet) para probar algo.
Trabajo en mi clon, hago algunos commits ... y luego me doy cuenta de que mis cambios no tienen sentido y tengo que comenzar de nuevo.La forma más rápida de "restablecer" el repositorio de Mercurial a la versión X (sin clonación)

Así que quiero tener un clon "nuevo" de nuevo, del mismo repositorio fuente.
Básicamente, quiero "restablecer" mi repositorio local al punto antes de comenzar a experimentar.

¿Cuál es la mejor/más rápida forma de hacerlo?

La manera más simple sería hacer un nuevo clon, pero luego HG copia el repositorio completo y todo el historial a través de la red nuevamente.
Si el repositorio es realmente grande, llevará tiempo y/o bloqueará la red.

Traté de hacer un nuevo clon en la misma carpeta (esperando que HG lo reconozca y actualice solo los archivos que han cambiado y el historial) pero que parece copiar todo el repositorio también.

Podría "revertir hg", pero esto revierte solo la última confirmación. Si hice varios commits, solo puedo deshacer el último. Así que no puedo restablecer el repositorio hasta el punto antes de comenzar a comprometerme.

¿Alguna idea?
¿Realmente no hay otra manera que clonar todo de nuevo?
(nota: una solución con TortoiseHg sería bueno ... yo prefiero este sobre la línea de comandos)

Respuesta

17

Nos terminará usando hg strip como sugiere el gizmo, pero la forma tradicional de hacer esto sería volver a clonar, no desde el repositorio remoto, sino desde su repositorio local. Por ejemplo, si obtiene es 'repositorio' y que ha añadido conjuntos de cambios 99 y 100 que no le gusta que haría:

cd .. 
hg clone -r 98 respository repository-scrubbed 
mv repository respository-with-crap-I-do-not-want 
mv repository-scrubbed repository 

que deberían estar cerca instantánea.

1

hg update -r <changeset number> por ejemplo hg update -r 1 para la segunda versión. Puede usar hg log para ver qué versión desea

+2

Eso en realidad no haría que el sistema volviera al mismo estado que cuando se clonó - aún tendría las confirmaciones que se hicieron desde que 'ayer' –

8

Si habilita el Mq Extension, puede usar el comando "hg strip" que eliminará el historial que ya no desea.
Más información está disponible en la página wiki Strip command.

+0

esto funcionó para mí –

Cuestiones relacionadas