mercurial merge merge-conflict-resolution kdiff3

¿Cómo resolver este conflicto Mercurial?



merge merge-conflict-resolution (2)

Estoy frustrado con Mercurial y Python ya que hace que las cosas fáciles sean difíciles. Tengo un conflicto trivial y dado que Mercurial no da ninguna sugerencia sobre qué hacer, ni siquiera sé cómo resolver este conflicto trivial de archivos:

El conflicto es trivial, pero si no puedo resolverlo tampoco puedo resolver nada complicado. ¿Puedo simplemente editar el archivo de la manera que quiero y volver a enviarlo desde cualquier lugar? ¿Debo ejecutar hg merge ? ¿Por qué Mercurial ni siquiera me deja elegir una versión para mantener? ¿Por qué es algo trivial casi imposible de hacer sin excavar a través de 1000 páginas de manual mal escritas?


Debe mirar la documentación de KDiff3 , en particular la sección de fusión y la ventana de salida . Para resolver el conflicto, debe decidir si live or january es la elección correcta para la línea. Esa decisión es suya, ninguna herramienta puede saber si se refería a una u otra.

En KDiff3, presione Ctrl + 2 para seleccionar en live , presione Ctrl + 3 para seleccionar january o haga clic con el botón derecho en el margen de la ventana inferior y seleccione la línea que desea. También puede hacer clic en la ventana inferior y editar la línea manualmente.

Mercurial te permite configurar tu herramienta de combinación como quieras. TortoiseHg se envía con una configuración predeterminada que coloca KDiff3 en la parte superior de la lista, pero puede usar otra herramienta si lo desea. Una herramienta de fusión es realmente solo un programa que acepta cuatro nombres de archivo: los tres archivos para comparar (base, padre 1, padre 2) y un nombre de archivo de salida.

Para resolver conflictos en la línea de comandos, debe iniciar una herramienta adecuada de fusión de tres líneas de línea de comandos. Por ejemplo, puede fusionarse con vim si lo desea. (Me temo que no sé nada sobre vimdiff, uso KDiff3 por mi cuenta).

Si no le gusta ver aparecer las herramientas de fusión, puede configurar

[ui] merge = internal:merge

hacer que Mercurial use la fusión interna tripartita solamente. Combinará bien los archivos cuando las ediciones no estén en conflicto. Cuando hay un conflicto, el archivo se marca como "no resuelto" y los marcadores de conflicto se almacenan en el archivo.

Luego necesita editar el archivo a mano para obtener la versión que desea. También puede volver a fusionarse y elegir la versión local (su):

$ hg resolve --tool internal:local your-file

o la otra versión:

$ hg resolve --tool internal:other your-file

Reinicia la fusión por completo con hg resolve your-file . El archivo debe marcarse como "resuelto" antes de poder confirmarlo. Esto se hace con hg resolve --mark your-file . Ver hg resolve --list para el estado de la fusión actual.


Base es la versión anterior en su sistema local, el padre 1 es sus cambios actuales, el padre 2 es el archivo del servidor.

Si necesita que se registren sus cambios, seleccione B en todas partes en el menú de fusión. Si desea la última versión del servidor en su máquina local, seleccione C en todas partes en el menú de fusión