- Un outil pour résoudre les conflits de fusion Git, qui comprend l’arbre d’un fichier afin de concilier harmonieusement les besoins des deux côtés
- Permet d’ajouter de nouveaux langages de manière déclarative
- Peut être configuré pour utiliser Mergiraf à la place de l’algorithme de fusion par défaut de Git
- Améliore des commandes Git comme
merge, revert, rebase, cherrypick
- Il est aussi possible de conserver le comportement d’origine de Git et d’appeler manuellement Mergiraf lorsqu’un conflit survient.
Objectifs de Mergiraf
- Ne pas masquer les conflits
- Les heuristiques de fusion sensibles à la syntaxe peuvent parfois considérer de façon trop optimiste qu’un conflit a été résolu
- En cas de doute, Mergiraf préserve l’état le plus sûr en laissant les marqueurs de conflit dans le fichier
- Si tous les conflits ont été résolus automatiquement, il recommande de vérifier le travail de médiation avec la commande
mergiraf review
- Si la fusion semble incorrecte, il est facile de le signaler avec
mergiraf report
- Suffisamment rapide pour un usage interactif
- Une girafe peut courir à 60 kilomètres par heure
- La fusion des versions divergentes d’un fichier se produit souvent de manière routinière et passe inaperçue tant qu’il n’y a pas de conflit
- Mergiraf s’efforce d’être rapide afin de ne pas perturber le travail
- Ouvert à d’autres approches
- Dans de nombreux cas, la fusion basée sur les lignes fonctionne bien et aucune manipulation d’arbre n’est nécessaire
- S’il n’y a pas de conflit avec une fusion basée sur les lignes, Mergiraf renvoie ce résultat (très rapidement)
- Si une fusion basée sur les lignes crée des clés dupliquées, Mergiraf effectue un peu de travail supplémentaire pour résoudre le problème ou le mettre en évidence avec des marqueurs de conflit
2 commentaires
Les girafes peuvent courir à 60 kilomètres par heure.
Avis Hacker News
Travaille sur quelque chose de similaire à SemanticDiff et rencontre des problèmes avec l’utilisation de tree-sitter et GumTree
La section architecture de Mergiraf explique en profondeur le fonctionnement d’un outil complexe
Le choix de la girafe vient du fait qu’elle peut voir loin grâce à sa taille et qu’elle possède le plus grand cœur parmi les mammifères terrestres
Critique l’idée selon laquelle l’ordre n’aurait pas d’importance pour certaines insertions
struct Foo; struct Bar;, Left insèreimpl Foo { }entre les deux et Right insèrestruct Baz;, l’ordinateur ne perçoit pas la différenceVoit d’un bon œil le développement de merge drivers pour Git
printdifférent, on obtient un code invalideLes outils sensibles à la syntaxe rencontrent des difficultés lorsque les équipes étendent le langage de base pour l’adapter à leur problème
Idée qui pourrait aider à résoudre les conflits liés au formatage automatique
Compte essayer Mergiraf et l’utilise avec git-absorb
Le support de Python semblerait utile
Le support des langages est limité, mais espère que davantage de langages seront ajoutés