mercurial merge

mercurial - ¿Cómo abandonar una fusión de hg?



merge (4)

Aparentemente solo necesitaba hg update -C -r 3 , que sobrescribe mis archivos locales con la revolución en mente (que es lo que pensé que haría la hg update , pero me equivoqué). ¡Gracias por mi ayuda!

Soy nuevo en colaborar con Mercurial. Mi situación:

  • Otro programador cambió la revolución 1 de un archivo para reemplazar las sangrías de 4 espacios con sangría de 2 espacios. (Es decir, cambió cada línea.) Llame a esa revolución 2, empujada al repositorio remoto.
  • He cometido cambios sustanciales rev 1 con varios cambios de código en mi área de trabajo local. Llamar a ese rev 3.
  • hg pull y hg merge d sin una idea clara de lo que estaba pasando.
  • Los conflictos son innumerables y no son realmente sustantivos.

Así que realmente me gustaría haber cambiado mi repo local a sangrías de 2 espacios antes de fusionarme; entonces la fusión será trivial (supongo). Pero parece que no puedo respaldarlo. Creo que necesito hg update -r 3 pero dice abort: outstanding uncommitted merges .

¿Cómo puedo deshacer la fusión, cambiar el espacio en mi repositorio local y volver a abrir?


Para deshacer una fusión no comprometida, use

hg update --clean

que verificará una copia limpia del original fusion padre, perdiendo todos los cambios.


Por cierto: si solo reviertes la fusión que hiciste y 3 no es tu número de revisión, puedes hacer esto:

hg update -C -r .


Puede descartar cambios no confirmados con el indicador -C (o --clean):

hg update -C -r 3

CUIDADO: ¡Todo lo que no fue comprometido se habrá ido!

Después de eso, probablemente debas usar algún tipo de herramienta de formateo de código para realizar toda la operación, o al menos algunos buscar y reemplazar con expresiones regulares. Algo tan simple como reemplazar lo que coincide con ^____ (use 4 espacios en lugar de guiones bajos) con __ (2 espacios), repetido algunas veces (a menos que tenga algún código anidado insano) debería funcionar.