- Ferramenta para resolver conflitos de merge do Git, entendendo a árvore dentro do arquivo para conciliar de forma harmoniosa as necessidades dos dois lados
- É possível adicionar novas linguagens de forma declarativa
- Pode ser configurado para usar o Mergiraf no lugar do algoritmo de merge padrão do Git
- Melhora comandos do Git como
merge, revert, rebase e cherrypick
- Ou é possível manter o comportamento original do Git e chamar o Mergiraf manualmente quando ocorrer um conflito.
Objetivos do Mergiraf
- Não esconder conflitos
- Heurísticas de merge com reconhecimento de sintaxe às vezes podem considerar, de forma otimista demais, que um conflito foi resolvido
- O Mergiraf preserva o melhor estado possível mantendo marcadores de conflito no arquivo em casos duvidosos
- Se tiver resolvido todos os conflitos por conta própria, recomenda revisar o trabalho de mediação com o comando
mergiraf review
- Se a mesclagem parecer incorreta, é possível reportá-la facilmente com
mergiraf report
- Rápido o suficiente para uso interativo
- Girafas podem correr a 60 quilômetros por hora
- O trabalho de mesclar versões divergentes de um arquivo acontece com frequência no dia a dia, muitas vezes sem que se perceba, desde que não haja conflitos
- O Mergiraf busca ser rápido para não atrapalhar o fluxo de trabalho
- Aberto a outros métodos
- Em muitos casos, o merge baseado em linhas funciona bem e não exige manipulação de árvore
- Se não houver conflitos no merge baseado em linhas, o Mergiraf retorna esse merge (muito rápido)
- Se o merge baseado em linhas gerar chaves duplicadas, o Mergiraf faz um pouco de trabalho extra para resolver o problema ou destacá-lo com marcadores de conflito
2 comentários
As girafas conseguem correr a 60 quilômetros por hora.
Comentários do Hacker News
Está trabalhando em algo semelhante ao SemanticDiff e está enfrentando problemas ao usar tree-sitter e GumTree
A seção de arquitetura do Mergiraf explica em profundidade como uma ferramenta complexa funciona
O motivo de escolher uma girafa é que, por causa da altura, ela pode ver longe e tem o maior coração entre os mamíferos terrestres
É crítico em relação à alegação de que, em algumas inserções, a ordem não importa
struct Foo; struct Bar;da Base, a Left insereimpl Foo { }e a Right inserestruct Baz;, e o computador não consegue perceber a diferençaVê com bons olhos o desenvolvimento de um driver de merge para o Git
printdistintos, o resultado pode se tornar código inválidoFerramentas com reconhecimento sintático têm dificuldades quando a equipe estende a linguagem base para se adequar ao problema
É uma ideia que pode ajudar a resolver conflitos relacionados à formatação automática
Pretende experimentar o Mergiraf e já o usa junto com git-absorb
O suporte a Python parece que seria útil
O suporte a linguagens é limitado, mas espera que mais linguagens sejam adicionadas