Cómo hacer que git mergetool conozca los marcadores de diferencia

Git mergetool es un maravilloso command. Sin embargo, me parece muy molesto que muestre todas las diferencias con respecto a la BASE (posiblemente cientos), en lugar de los conflictos solamente (a menudo solo un par). Esta respuesta ( Tip One ) proporciona una solución … que sin embargo es manual (tome la salida de git merge, cree tres files diferentes con sus fragments, compárelos). Ciertamente estoy dispuesto a pasar media hora escribiendo un contenedor para mi aplicación favorita de edición de diferencias visuales, que hace esto automáticamente. ¿Pero ya hay una forma de lograr esto?

Bueno, no encontré una solución list, así que terminé escribiendo el envoltorio simple en cuestión:

http://pietrobattiston.it/mergetooltool

Así es como funciona: git le dice que encontró un conflicto en el file "conflicted.txt". Deja marcadores en él, delimitando las diferentes versiones.

Llama a "/path/to/mergetooltool.py conflictted.txt", analiza "conflictted.txt", reconoce los marcadores y simplemente crea dos files separados, uno con cada versión.

Luego, abre su GUI de diff (yo uso meld, puede simplemente configurar la suya en la línea 9), le permite resolver conflictos (la versión que desea usar debe dejarse en el panel izquierdo, la que muestra "conflictted.txt.local" "), y cuando cierras vuelves a poner la versión fusionada en" conflicted.txt ".

Luego puedes hacer "git add conflicted.txt" y (si no tienes otros files en conflicto) "git commit", y listo.

¿Por qué es mejor que puro git? Bueno, depende del gusto, pero las GUI de diff me resultan útiles.

Por qué es mejor que git mergetool: porque tendrás que resolver solo los conflictos.

¿Por qué es mejor que git mergetool con kdiff como herramienta de diferenciación? Porque puede usar la herramienta que prefiera, y porque git es un poco mejor que kdiff para resolver conflictos solucionables.