¿Cómo abortar una fusión en mercurial?

85

Me equivoqué en una fusión. Me gustaría revertir y volver a intentarlo.
¿Hay alguna forma de revertir una fusión antes de que se confirme?

hg revertno hace lo que me gustaría, solo revierte el texto de los archivos. Mercurial aborta mi segundo intento de fusión y se queja de que la fusión original aún no se ha comprometido.

¿Hay alguna forma de deshacer una combinación después de un hg mergecomando pero antes de que se confirme?

deft_code
fuente
Posible duplicado de ¿Cómo abandonar una fusión de hg?
Rodrigue

Respuestas:

106

hg update -C <one of the two merge changesets>

De todo género
fuente
Simple, eficiente y, creo, ¡la mejor manera de hacerlo! : D
Eric-Karl
@JonL. - Sí, --cleanes sinónimo de -C. No estoy seguro de a qué conjunto de cambios .se referirá, pero siempre será uno de los dos conjuntos de cambios fusionados.
Omnifarious
3
@Omnifarious, la limpieza .debe limpiar cualquier revisión en la que se encuentre antes de iniciar la fusión. Entonces, si estuviera en r42, intentara fusionarse con r43, fallara, limpiara, estaría de vuelta en un r42 prístino.
Jon L.
2
hg update --cleanfunciona, como .parece ser el valor predeterminado implícito, aunque no está documentado explícitamente .
Joel Purra
@JoelPurra: El significado de .en el contexto de una fusión es bastante ambiguo.
Omnifarious
39

Después de hacerlo hg merge, pero antes hg commit, su copia de trabajo tiene dos padres: el primer padre es el conjunto de cambios al que había actualizado antes de la fusión y el segundo padre es el conjunto de cambios con el que se está fusionando. Mercurial no le permitirá hg mergevolver a hacerlo siempre que su copia de trabajo tenga dos padres.

Tiene dos opciones sobre cómo proceder:

  1. Si desea cancelar la fusión y volver al punto de partida, haga

    hg update -C .
    

    Esto actualizará la copia de trabajo para que coincida con el primer padre: .siempre denota el primer padre de la copia de trabajo.

  2. Si desea volver a fusionar algunos archivos, haga

    hg resolve fileA fileB
    

    Esto volverá a ejecutar las herramientas de combinación como cuando lo hizo hg merge. El comando resolve es bueno si descubre en un momento hg mergeque sus herramientas de combinación están mal configuradas: corrija la configuración y ejecute hg resolve --all. Puede ejecutar hg resolvetantas veces como desee hasta que esté satisfecho con la combinación.

Martin Geisler
fuente