Was ist der Unterschied?

Momentan habe ich im Rahmen meiner Arbeit oft die Aufgabe Unterschiede zwischen zwei Versionen einer Datei zu beurteilen und zu kommentieren. Diese sind mitunter sehr Umfangreich. Kein Problem, sollte man meinen, denn es gibt ja die bewährten Diff-Programme. Hier mal ein Bild von VisualDiffer auf dem Mac.

Auch Git macht ja gerne Unterschiede „als Diff“ sichtbar. Aber leider sind nicht alle Unterschiede so einfach zu finden. Ein graphisches Programm generiert beispielsweise umfangreiche XML-Dateien, bei denen die Reihenfolge der Objekte schnell variieren kann und sich auch identische Inhalte in einem anderen Kontext neue Laufnummern bekommen. Diffs arbeiten nach verschiedenen Algorithmen, aber im allgemeinen erkennen sie beispielsweise nicht zuverlässig, ob zwei ähnliche Blöcke vertauscht, oder ineinander geändert wurden. Um bestimmte Unterschiede zu bewerten bräuchte es einen Kontext, der über die bloße Sequenz von Buchstaben hinausgeht.

Ein Beispiel wie man sich behelfen kann: Microsoft Word hat schon seit langem eine Funktion im „Überprüfen“-Reiter, mit der man zwei Dokumente vergleichen kann. Das war bitter nötig, weil das binäre Dateiformat traditionelle Diffs unmöglich machte. Außerdem kann es Änderungen dauerhaft protokollieren, während sie geschehen. (Das benötigt man für eine Undo-Funktion ohnehin.)

Leider haben nicht alle Hersteller die Notwendigkeit für eine solche Funktion erkannt. Hätte mein spezielles Programm seine eigene Unterschiedserkennung, dann wäre vieles einfacher. 

© Sven Mertens 2018