Application Kata “Konfliktlöser”

Schreibe 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):

the solar system
the number of planets is
<<<<<<< HEAD nine minus one ======= eight >>>>>>> branch-a
earth is the 3rd planet

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]

Application Kata Konfliktlöser - Clean Code Developer Akademie

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!