- Ein Tool zum Lösen von Git-Merge-Konflikten, das den Baum innerhalb einer Datei versteht und die Anforderungen beider Seiten harmonisch zusammenführt
- Neue Sprachen lassen sich deklarativ hinzufügen
- Es kann so konfiguriert werden, dass statt des standardmäßigen Merge-Algorithmus von Git Mergiraf verwendet wird
- Verbessert Git-Befehle wie
merge, revert, rebase und cherrypick
- Alternativ kann das ursprüngliche Verhalten von Git beibehalten und Mergiraf bei Konflikten manuell aufgerufen werden.
Ziele von Mergiraf
- Konflikte nicht verbergen
- Syntaxbewusste Merge-Heuristiken können manchmal zu optimistisch annehmen, dass ein Konflikt gelöst wurde
- Mergiraf bewahrt im Zweifelsfall den bestmöglichen Zustand, indem es Konfliktmarker in der Datei belässt
- Wenn alle Konflikte eigenständig gelöst wurden, wird empfohlen, die Vermittlungsarbeit mit dem Befehl
mergiraf review zu prüfen
- Wenn die Zusammenführung fehlerhaft aussieht, kann sie mit
mergiraf report einfach gemeldet werden
- Schnell genug für den interaktiven Einsatz
- Giraffen können 60 Kilometer pro Stunde laufen
- Das Zusammenführen von Dateiversionen aus Verzweigungen geschieht oft unbemerkt im Alltag, solange es keine Konflikte gibt
- Mergiraf bemüht sich, schnell zu sein, um den Arbeitsfluss nicht zu stören
- Offen für andere Ansätze
- In vielen Fällen funktioniert zeilenbasiertes Merging gut, und es ist keine Baummanipulation nötig
- Wenn das zeilenbasierte Merging keinen Konflikt verursacht, gibt Mergiraf dieses Merge-Ergebnis zurück (sehr schnell)
- Wenn durch zeilenbasiertes Merging doppelte Schlüssel entstehen, führt Mergiraf etwas zusätzliche Arbeit aus, um das Problem zu beheben oder mit Konfliktmarkern hervorzuheben
2 Kommentare
Giraffen können also mit 60 Kilometern pro Stunde laufen.
Hacker-News-Kommentare
Arbeitet an etwas Ähnlichem wie SemanticDiff und hat Probleme bei der Nutzung von tree-sitter und GumTree
Der Architekturabschnitt von Mergiraf erklärt tiefgehend, wie das komplexe Tool funktioniert
Der Giraffe wurde gewählt, weil sie dank ihrer Höhe weit sehen kann und unter den Landsäugetieren das größte Herz hat
Ist kritisch gegenüber der Behauptung, dass bei manchen Einfügungen die Reihenfolge unwichtig sei
struct Foo; struct Bar;fügt Leftimpl Foo { }ein und Rightstruct Baz;; der Computer erkennt den Unterschied nichtSieht die Entwicklung von Merge-Treibern für Git positiv
print-Anweisungen löschen, entsteht ungültiger CodeSyntaxbewusste Tools haben Probleme, wenn Teams die Basissprache passend zum Problem erweitern
Eine interessante Idee, die bei der Auflösung von Konflikten durch automatisches Formatieren helfen könnte
Will Mergiraf ausprobieren und nutzt bereits git-absorb zusammen damit
Python-Unterstützung dürfte nützlich sein
Die Sprachunterstützung ist begrenzt, es wird jedoch gehofft, dass mehr Sprachen hinzukommen