2009-03-26 20 views
17

¿Hay alguna manera de tomar el control manual completo sobre el proceso de fusión de Mercurial?fusión Mercurial completamente manual

Quiero ser capaz de elegir la dirección del archivo de combinación, incluso para archivos sin conflictos. ¿Es eso posible?

Respuesta

20

Turn "pre-fusión" fuera en la configuración de combinación. Entonces todo cuenta como un conflicto y puede elegir "izquierda" o "derecha" para cada cambio de archivo.

[merge-tools] 
mymergetool.premerge = False 

de MergeToolConfiguration on the Mercurial wiki.

+0

Nowaways puede intentar 'hg funden --tool interna: prompt' –

+0

Probablemente sería ayudar a alguien porque ni por encima ni por debajo de fragmento de código no me ayudará. He añadido '[ui] -> merge = internal: merge' y deshabilitó completamente las herramientas de resolución después de la fusión fallida. En realidad, [este] (http://i.stack.imgur.com/WNHq4.png) herramienta molesta comenzó a aparecer después de que actualicé mi versión de Mercurial. – ivkremer

2

Una fusión se realiza siempre entre la revisión padre del directorio de trabajo y otra revisión, por defecto la otra cabeza en su repositorio.

Si desea combinar en la otra "dirección" puede cambiar la que la rama se encuentra en el directorio de trabajo por el control de una revisión específica:

hg update -r [rev] 

Para ver que los jefes que tiene en su repositorio de ejecutar el siguiente comando:

hg heads 

Alternativamente, si usted está utilizando fetch puede utilizar la opción de fusionar --switch-parent en la otra dirección:

hg fetch --switch-parent 

No se puede cambiar la dirección de la combinación archivo por archivo, ya que Mercurial funciona con conjuntos de cambios que afectan a un repositorio completo no mediante el seguimiento de cambios en archivos individuales como CVS.

+1

veo que aceptó su respuesta, pero no creo que en realidad es lo que estaba pidiendo. Le dijiste cómo elegir "izquierda" o "derecha" para todos los no conflictos, pero si quiere mezclar y combinar, necesita desactivar la "fusión previa" interna antes de iniciar su herramienta de combinación. –

12

Editar el archivo de configuración de esta manera:

[ui] 
merge = kdiff3 

[merge-tools] 
kdiff3.premerge = false 
kdiff3.args=--L1 base --L2 local --L3 other $base $local $other -o $output 

Por defecto se pone el argumento --auto en kdiff3 fusiones de automóviles por lo kdiff3.

+0

+1 porque estoy luchando con esto durante media hora, y usted es la primera persona que recomienda eliminar el argumento '--auto'. Me llevaría mucho tiempo encontrarlo (ya que ya lo había omitido todas las otras veces que necesitaba una fusión manual). –

1

En el caso de KDiff3 es vital agregar la opción --qall (ver http://kdiff3.sourceforge.net/doc/documentation.html). Habrá una fusión automática de algunos conflictos sin esta clave (como "Resolver automáticamente conflictos simples" del menú "Combinar "). Así, la línea de comandos más adecuada es:

[ui] 
merge = kdiff3 

[merge-tools] 
kdiff3.premerge = False 
kdiff3.args=$base $local $other -o $output --L1 base --L2 local --L3 other --qall 
Cuestiones relacionadas