Estoy moviendo un proceso de compilación para usar mercurial y quiero que el directorio de trabajo vuelva al estado de la revisión de la sugerencia. Las ejecuciones anteriores del proceso de compilación habrán modificado algunos archivos y agregado algunos archivos que no quiero confirmar, por lo que tengo cambios locales y archivos que no se agregan al repositorio.
¿Cuál es la forma más fácil de descartar todo eso y obtener un directorio de trabajo limpio que tenga la última revisión?
Actualmente estoy haciendo esto:
hg revert --all
<build command here to delete the contents of the working directory, except the .hg folder.>
hg pull
hg update -r MY_BRANCH
pero parece que debería haber una manera más simple.
Quiero hacer el equivalente a eliminar el repositorio, hacer un clon nuevo y una actualización. Pero el repositorio es demasiado grande para que sea lo suficientemente rápido.
hg update 00
) y luego vuelva a la sugerencia. ¿Por qué no eshg revert --all
suficiente volver a un estado de carpeta de trabajo consistente antes de extraer y actualizar?archive
comando útil en el futuro. Por ejemplo, podríahg archive ../newbuild
, y una instantánea de su repositorio al finalhg update
se colocará allí. Normalmente hago eso para las compilaciones nocturnas solo para no arriesgarme a saturar mi repositorio. Simplemente elimine el directorio de compilación cuando ya no lo necesite.Respuestas:
Esos pasos deberían poder reducirse a:
los
-C
indicador le dice al comando de actualización que descarte todos los cambios locales antes de actualizar.Sin embargo, esto podría dejar archivos sin seguimiento en su repositorio. Parece que también quieres deshacerte de ellos, así que usaría la
purge
extensión para eso:En cualquier caso, no hay un solo comando que pueda pedirle a Mercurial que realice que haga todo lo que desee aquí, excepto si cambia el proceso a ese método de "clon completo" que dice que no puede hacer.
fuente
hg --config "extensions.purge=" purge --all
hg purge --all
me dio un buen dolor de cabeza, ya que también borró mis configuraciones locales, es decir: usuario / contraseña de la base de datos, etc. :)Esto eliminará todos los cambios y se actualizará al último encabezado de la rama actual.
Y puede activar la extensión de purga para poder eliminar todos los archivos no versionados también.
fuente
hg purge
es para archivos no versionados.Para eliminar sin seguimiento en * nix sin la extensión de purga, puede usar
Que está usando
fuente
Si buscas un método que sea fácil , puede intentarlo.
Yo mismo apenas puedo recordar las líneas de comandos para todas mis herramientas, por lo que tiendo a hacerlo usando la interfaz de usuario:
1. Primero, seleccione "commit"
2. Luego, muestre los archivos ignorados. Si tiene cambios sin confirmar, escóndelos.
3. Ahora, selecciónelos todos y haga clic en "Eliminar sin versión".
Hecho. Es un procedimiento que es mucho más fácil de recordar que las cosas de la línea de comandos.
fuente
El estado de hg le mostrará todos los archivos nuevos, y luego podrá simplemente ejecutarlos .
Normalmente quiero deshacerme de los archivos ignorados y no versionados, entonces:
Y luego sigue eso con:
que pone todos los archivos versionados en el estado correcto para la revisión xxxx
Para seguir la tradición de Stack Overflow de decirte que no quieres hacer esto, a menudo encuentro que esta "Opción Nuclear" ha destruido cosas que me importan.
La forma correcta de hacerlo es tener una opción 'hacer limpio' en su proceso de construcción, y tal vez también 'hacer realmente limpio' y 'hacer distclean'.
fuente