- Una herramienta para resolver conflictos de merge en Git, que entiende el árbol dentro del archivo para conciliar de forma armoniosa las necesidades de ambos lados
- Permite agregar nuevos lenguajes de forma declarativa
- Se puede configurar para usar Mergiraf en lugar del algoritmo de merge predeterminado de Git
- Mejora comandos de Git como
merge, revert, rebase y cherrypick
- O bien, se puede invocar Mergiraf manualmente cuando ocurra un conflicto, manteniendo el comportamiento original de Git.
Objetivos de Mergiraf
- No ocultar los conflictos
- Las heurísticas de merge con reconocimiento de sintaxis a veces pueden ser demasiado optimistas y considerar que un conflicto quedó resuelto
- Mergiraf preserva el mejor estado posible manteniendo marcadores de conflicto en el archivo cuando hay dudas
- Si resolvió todos los conflictos por sí solo, recomienda revisar el trabajo de mediación con el comando
mergiraf review
- Si el merge parece incorrecto, se puede reportar fácilmente con
mergiraf report
- Lo suficientemente rápido para uso interactivo
- Una jirafa puede correr a 60 kilómetros por hora
- El trabajo de fusionar versiones divergentes de un archivo suele ocurrir de forma rutinaria y pasar desapercibido, siempre que no haya conflictos
- Mergiraf busca ser rápido para no interrumpir tu trabajo
- Abierto a otros métodos
- En muchos casos, el merge basado en líneas funciona bien y no requiere manipulación de árboles
- Si el merge basado en líneas no tiene conflictos, Mergiraf devuelve ese resultado (muy rápido)
- Si el merge basado en líneas genera claves duplicadas, Mergiraf realiza un poco de trabajo adicional para resolver el problema o resaltarlo con marcadores de conflicto
2 comentarios
Vaya, las jirafas pueden correr a 60 kilómetros por hora.
Comentarios en Hacker News
Está haciendo un trabajo similar a SemanticDiff y está teniendo problemas al usar tree-sitter y GumTree
La sección de arquitectura de Mergiraf explica en profundidad cómo funciona una herramienta compleja
La razón para elegir una jirafa es que, gracias a su altura, puede ver a lo lejos y porque tiene el corazón más grande entre los mamíferos terrestres
Es crítico con la afirmación de que en algunas inserciones el orden no importa
struct Foo; struct Bar;, Left insertaimpl Foo { }y Right insertastruct Baz;, y la computadora no percibe la diferenciaVe con buenos ojos el desarrollo de controladores de fusión para Git
printdiferente, el resultado puede ser código no válidoLas herramientas con reconocimiento sintáctico tienen problemas cuando el equipo extiende el lenguaje base para adaptarlo al problema
Cree que esta idea podría ayudar a resolver conflictos relacionados con el formateo automático
Planea probar Mergiraf y ya lo usa junto con git-absorb
El soporte para Python parece que sería útil
El soporte de lenguajes es limitado, pero espera que se agregue compatibilidad con más lenguajes