Textvergleich (Diff)
Vergleicht zwei Textblöcke Zeile für Zeile und zeigt hinzugefügte und entfernte Zeilen farblich markiert an. Nützlich, um Änderungen an Konfigurationsdateien zu prüfen, Dokumente Korrektur zu lesen oder Code ohne Git zu überprüfen. Die gesamte Berechnung erfolgt im Browser; eingegebene Inhalte werden nie an einen Server gesendet.
Tipps
- Füge die Vorher- und Nachher-Version einer Konfigurationsdatei (.env, YAML, JSON usw.) ein, um sofort zu sehen, welche Zeilen hinzugefügt oder entfernt wurden.
- Auch ohne installiertes Git lässt sich allein durch Kopieren und Einfügen zweier Versionen ein einfaches Code-Review oder Korrekturlesen durchführen.
- Eine Zeile, die einfach an eine andere Position verschoben wurde, wird als Entfernen plus Hinzufügen erkannt, nicht als "Verschieben" — das sollte man beim Lesen des Ergebnisses bedenken.
- Leerzeichen, Zeilenumbrüche und Groß-/Kleinschreibung werden streng verglichen, sodass eine Zeile, die nur ihre Einrückung geändert hat, ebenfalls als geändert markiert wird.
- Bei langen Texten hilft es, vor dem Einfügen jeden Absatz in eine eigene Zeile zu setzen, damit die Unterschiede pro Absatz auf einen Blick erkennbar sind.
Häufig gestellte Fragen
Übrigens – wie LCS (längste gemeinsame Teilsequenz) Textunterschiede berechnet
Der bekannteste Algorithmus zur Erkennung von Unterschieden zwischen zwei Texten ist der in den 1970er-Jahren vom IBM-Informatiker Eugene Myers veröffentlichte "Myers-Diff-Algorithmus". Der `diff`-Befehl großer Versionsverwaltungssysteme wie Git und SVN basiert auf dieser Algorithmenfamilie und erkennt effizient zeilenweise hinzugefügte und entfernte Inhalte. Auch dieses Tool folgt diesem Grundgedanken und berechnet die längste gemeinsame Teilsequenz (LCS), um das Ergebnis auf die minimal nötigen Änderungen zu reduzieren.
Die längste gemeinsame Teilsequenz (LCS) ist die längste Folge, die in gleicher Reihenfolge in beiden verglichenen Sequenzen vorkommt — hier die Folge der Zeilen. Der Unterschied zwischen zwei Texten ergibt sich, indem jede Zeile, die nicht Teil dieser LCS ist, als "entfernt" oder "hinzugefügt" gilt; je länger die LCS, desto weniger Änderungen werden angezeigt. Eine Technik namens dynamische Programmierung (DP) macht diese Berechnung auch bei sehr vielen Zeilen praktikabel.
Diff-Algorithmen haben eine bekannte Schwäche: Wenn eine Zeile lediglich an eine andere Position verschoben wird, erkennen die meisten Implementierungen dies nicht als "Verschiebung", sondern zeigen es als Entfernen zusammen mit einem Hinzufügen. Deshalb kann der Vergleich von Texten, deren Zeilenreihenfolge stark durcheinandergebracht wurde, mehr Unterschiede zeigen, als tatsächlich geändert wurde. Wer diese Eigenheit kennt, kann Diff-Ergebnisse besser einordnen.