Git: Besserer Vergleich von Word-Dokumenten
Aus meinem alten Blog (2012–2017). Der Text steht so, wie ich ihn damals geschrieben habe.
Ich habe recht häufig mit Word-Dokumenten zu tun, die ich gerne in Git-Repositories einchecke. Ob das gut oder schlecht ist, sowohl mein häufiger Kontakt mit Word, als auch die Organisation mittels Git, möchte ich hier gar nicht thematisieren :). Im Moment passt es so, auch wenn ich gerne mehr mit LaTeX & Co. arbeiten würde, anstatt mit Word & Co. Aber das ist selten meine Entscheidung und daher nicht zu ändern.
Mir geht es in diesem Blogpost eher um ein paar Tipps und Tricks beim Vergleich von Änderungen zwischen Word-Dokumenten. Das kann schnell sehr nervig sein, insbesondere bei längeren Dokumenten.
Der übliche Weg
In der Regel können zwei Dokumente mit git diff verglichen werden. Ich habe mir zu Testzwecken ein neues Git-Repository angelegt und ein Word-Dokument(öffnet in neuem Tab) erstellt. Der Inhalt hält sich stark in Grenzen. Es sind nur die folgenden Zeilen enthalten.
Etwas Text in der ersten Zeile.
Etwas Text in der zweiten Zeile.
Etwas Text in der dritten Zeile.
Etwas Text in der vierten Zeile.
Etwas Text in der fünften Zeile.
Soll ja auch nur ein Test sein. Nach einem ersten Commit habe ich Änderungen an der zweiten und vierten Zeile vorgenommen, in dem ich die Wörter „zweiten“ und „vierten“ durch die jeweiligen Zahlen ersetzt habe. Nichts aufregendes. Ein Vergleich dieser Änderungen mittels git diff ergibt das Ergebnis, das in Abbildung 1 abgebildet ist.
Bild nicht mehr verfügbarAbb. 1: Ergebnis des Git-diff-Aufrufs.
Abb. 1: Ergebnis des Git-diff-Aufrufs.
Die gelöschten Zeilen werden rot, die hinzugefügten grün dargestellt. So einfach das Beispiel auch ist, zeigt sich hier schon ein erstes Problem. Es sieht so aus, als ob die ganzen Zeilen ausgetauscht wurden. Erst auf den zweiten Blick fallen die konkreten Änderungen an den beiden Wörtern auf. Abhilfe schafft der Parameter --color-words, der git diff übergeben werden kann. Dadurch werden nur die geänderten Wörter hervorgehoben, was in Abbildung 2 zu sehen ist.
Bild nicht mehr verfügbarAbb. 2: Git-diff mit dem Parameter --color-words.
Abb. 2: Git-diff mit dem Parameter –color-words.
Das ist deutlich übersichtlicher. Da ich diese Einstellung von git diff relativ häufig verwende, lohnt sich ein Alias dafür. Der kann ganz einfach über das folgende Kommando angelegt werden.
git config –global alias.wdiff diff –color-words
Und schon steht der Alias wdiff global zur Verfügung.
Visuelle Werkzeuge
Als Alternative dazu ist auch der Einsatz von visuellen Werkzeugen möglich. In diesem Fall möchte ich gerne spezielle diff-Skripte vorstellen. Diese werden sowohl mit TortoiseGit als auch TortoiseSVN installiert. Alternativ können die Skripte aber auch direkt heruntergeladen(öffnet in neuem Tab) werden. Ob von TortoiseGit oder TortoiseSVN spielt dabei keine Rolle. Der Link für zur TortoiseSVN-Website.
Zuerst ist noch eine Einstellung in der Git-Konfiguration notwendig, damit die genannten Skripte auch verwendet werden. Das folgende Gist(öffnet in neuem Tab) zeigt die vier Zeilen, die in eine lokale oder globale Konfigurationsdatei eingetragen werden müssen.
Code auf GitHub Gist: git-config.txt →(öffnet in neuem Tab)
Damit wird ein neues Tool in der Konfigurationsdatei eingeführt, das ab jetzt bei einem Aufruf von git diff durch den Kommandozeilenaufruf
git difftool -t wdiff Dokument.docx
gestartet wird. Da ein externes Skript ausgeführt wird, erscheint noch eine kurze Abfrage, ob das auch gewollt ist (Abbildung 3).
Bild nicht mehr verfügbarAbb. 3: Git-diff mit einem externen Skript.
Abb. 3: Git-diff mit einem externen Skript.
Anschließend öffnet sich eine Word-Instanz mit dem angegebenen Dokument (Abbildung 4). Auf der rechten Seite ist das Originaldokument aus dem vorherigen Commit und das überarbeitete Dokument aufgelistet.
Bild nicht mehr verfügbarAbb. 4: Git-diff unterstützt durch eine Word-Instanz.
Abb. 4: Git-diff unterstützt durch eine Word-Instanz.
Auf der linken Seite gibt es eine Übersicht über alle Änderungen. In der Mitte wird das aktuelle Dokument mit den markierten Abweichungen angezeigt. Bei komplexeren Dokumenten ist diese Ansicht sehr von Vorteil und erlaubt einen guten Überblick über das, was geändert wurde.
Fazit
Neben einem einfachen diff mit und ohne hervorgehobenen Wörtern, erlaubt Git auch eine komplexeren Übersicht mittels diff-Skripte. Das funktioniert nicht nur bei Word-Dokumenten, sondern beispielsweise auch für odt-, ppt- und xls-Dateien. Zusätzlich sind Merge-Skripte vorhanden, diese allerdings nur für doc- und ods-Dateien.
Ob diese Übersicht nützlich ist oder nicht, muss jeder für sich entscheiden. Ich finde sie bei größeren Dokumenten oft hilfreich, bemühe – in der Regel – vorher aber den Alias wdiff. Je nach Umfang der Änderungen reicht das schon aus.
Das verwendete Git-Repository kann als 7zip-Datei heruntergeladen(öffnet in neuem Tab) werden, um die gezeigten Beispiele selbst ausprobieren zu können. Die meisten der oben gezeigten Einstellungen habe ich lokal durchgeführt, sind also direkt im Repository gespeichert.