Ancestor-basiertes Drei-Wege-Diff/Merge mit bearbeitbarer Ausgabe

Eine riesige Java-Datei wurde sowohl von meiner Firma als auch von einer anderen Firma umfassend modifiziert, und jetzt ist es an der Zeit, sie zusammenzuführen.

Kdiff3 zeigt seine Grenzen auf

Normalerweise verwende ich Meld oder Kdiff3 , aber heute habe ich das Gefühl, dass ein besseres Tool benötigt wird. Meld zeigt nicht ANCESTOR, und das Zusammenführen in Kdiff3 bedeutet, dass ich für jede Änderung nur MINE oder IHRE behalten kann, ich kann nicht beide hinzufügen oder bearbeiten, um die guten Sachen beider Seiten zusammenzuführen.

Absolute Anforderungen:

  • Siehe 3 Dateien nebeneinander: VORFAHREN, IHRE, MEINE
  • Möglichkeit MINE zu bearbeiten, Speichern aktualisiert den Diff/Merge
  • Unterschiede auf Charakterebene mit Farbe anzeigen
  • Beim Aktualisieren geht die Cursor-/Bildlaufposition nicht verloren
  • Open Source
  • Verwendbar unter Linux

Bonus für die intelligente Erkennung von Java/C#-Methodenblöcken:

  • Erkennt Methodenprototypen und gibt ihnen viel mehr Gewicht als anderen Linien.
  • Teilen Sie keine Javadoc+Methodenblöcke
  • Methode für Methode faltbare Benutzeroberfläche
  • Idealerweise können Sie mir vorher Methoden mitteilen, die verschoben wurden
  • Fügen Sie alle Importe großzügig hinzu, da das Entfernen nicht benötigter Importe eine einfache spätere Lösung ist.

Hinweis : Jeder der beiden Zweige hat seine eigene Historie von Commits und Unterzweigen, die auf Github öffentlich zugänglich sind.

Haben Sie in diesem Fall versucht, einen Zweig basierend auf Ihren Änderungen zu starten und ihn dann auf dem anderen Satz neu zu erstellen? Es scheint, als wäre es gesünder, die Änderungen einzeln durchzugehen, als eine einzige hirnzerstörende Drei-Wege-Mischung. Sogar das Starten eines sauberen Zweigs an dem Punkt, an dem sie auseinandergingen, und das anschließende Rosinenpicken der gewünschten Änderungen aus jedem wäre besser für die Gesundheit des Codes. Dies setzt voraus, dass die Leute vernünftige inkrementelle Commits vorgenommen haben, aber es könnte sich lohnen, dies zu überprüfen.
Ich verwende KDiff3 für alle meine Zusammenführungen und habe die Möglichkeit, aus MEINEN und IHREN hinzuzufügen, sowie die Möglichkeit, die endgültige Ausgabe direkt in KDiff3 zu bearbeiten. Ich bin mir nicht sicher, warum Sie behaupten, dass dies nicht möglich ist.
@JasonDown: Ich kann mit kdiff3 0.9.97 nichts bearbeiten
Ich habe 0.0.96a und kann B wählen, dann zurück zur Zeile gehen und auch C wählen (oder umgekehrt), wodurch beide Änderungen eingefügt werden. Außerdem kann ich in das Ausgabefenster unten gehen und die Ausgabe direkt bearbeiten Datei, während Sie Änderungen vornehmen. Bei Bedarf kann ich ein paar Screenshots machen.
Als Version meinte ich 0.9.96a.
Jeder, der auf diese Frage zurückkommt, könnte an dieser Antwort von SO interessiert sein , die beschreibt, wie BASE (ähnlich wie ANCESTOR) in angezeigt wird meld.

Antworten (1)

Wie von JasonDown betont, ist kdiff3 tatsächlich in der Lage, dies mehr oder weniger zu tun.

MINE kann nicht bearbeitet werden, aber das Ausgabefenster kann verwendet werden, um beide Zeilen von ANCESTOR und THEIRS auszuwählen und kann bearbeitet werden.