Konfliktlöser

Application Kata „Konfliktlöser“

Schreiben Sie ein Tool, mit dem sich Konflikte in Textdateien auflösen lassen.

Konflikte werden z.B. von Git beim Zusammenführen von Commits aus unterschiedlichen Branches so markiert (vgl. z.B. GitHub Dokumentation zum Auflösen von Konflikten):

Mit <<<<<<< wird ein „Konfliktherd“ eingeleitet, mit >>>>>>> beendet. Zwischen diesen Klammern stehen die konfligierenden Passagen durch ======= getrennt. „HEAD“ bzw. „branch-a“ bezeichnen die Quellen der Textalternativen in einem Git-Repository.

Das Tool soll eine Textdatei mit solchen Konfliktpassagen anzeigen und die Auswahl der Textalternativen leicht machen. Dazu können die konkurrierenden Passagen parallel dargestellt werden, z.B. so:[1]

Text, der in beiden Alternativen gleich ist, taucht beidseitig auf. Text, der sich unterscheidet, wird farblich hervorgehoben – hüben wie drüben mit derselben Farbe. So ist zu erkennen, welche Passagen sich gegenüberstehen.

Wenn im Text gescrollt wird, sollten die konfligierenden Texte beieinander bleiben; beide Seiten sollten also synchron gescrollt werden.

Welcher Konflikt im Fokus steht, sollte die Darstellung unmissverständlich anzeigen.

Die Auswahl der einen oder der anderen oder beider oder sogar keiner der Alternativen muss in einfacher Weise möglich sein. Ebenso sollte es möglich sein, sich nicht zu entscheiden und den Konflikt bestehen zu lassen.

Nach der Auswahl sollte deutlich angezeigt werden, wie die Wahl ausgefallen ist.

Natürlich kann für jeden Konflikt die Entscheidung bis zum Speichern wieder geändert werden.


[1] Achtung: Es muss auch ein fehlender Text in einer Alternative einem vorhandenen in der anderen gegenübergestellt werden können!