Merge-Konflikte manuell auflösen

Letzte Änderung am 25. November 2019 by Christoph Jüngling

Merge-Konflikte bedeuten Arbeit, denn wo die Automatik versagt, muss der Mensch ran.

Angenommen, zwei Entwickler arbeiten an dem selben Feature und kommen mehr oder weniger auf die selbe Idee, was dann von beiden eine Änderung in derselben Quellcode-Zeile zur Folge hat. Wenn dann später eine Zusammenführung dieser beiden Entwicklungslinien erfolgt, wird es unweigerlich zu einem Konflikt kommen, da Mercurial nicht beide Änderungen eigenständig durchführen kann.

Üblicherweise wird in diesem Zusammenhang von einem Three-Way-Merge gesprochen. Bei einem Drei-Wege-Merge wird die den beiden zu verschmelzenden Köpfen (im Bild unten sind dies “B” und “C”) gemeinsame Basisrevision der Datei als dritte Revision hinzugezogen (“A”). Wenn Mercurial einen Konflikt bemerkt, den es nicht automatisch auflösen kann, gibt es unter anderem die Möglichkeit, ein spezielles Programm dafür einzusetzen. TortoiseHg installiert dafür KDiff3 und wählt dieses auch automatisch aus. Natürlich kann auch jedes andere passende Tool verwendet werden (global oder repository settings –> TortoiseHg –> Three way merge tool).

Der Entwickler, der den Merge durchführt, bekommt dann z.B. in KDiff3 diese drei Revisionen angezeigt. Er muss nun entscheiden, welcher Variante der Vorzug zu geben ist. Dementsprechend klickt er in der Symbolleiste auf “B” oder “C”:

Konflikt in KDiff3

Merge-Konflikt in KDiff3 lösen

Phil Gilmore hat hier eine gute Beschreibung (englisch, bebildert) veröffentlicht, wie man bei einem Drei-Wege-Merge das Programm KDiff3 dazu bringt, ein anderes “Alignment” der Dateien vorzunehmen als automatisch gewählt.

Ähnliche Artikel:

Schreibe einen Kommentar

Deine Email-Adresse wird nicht veröffentlicht.

vierzehn + achtzehn =