Git und Word – Versionsvergleich von docx-Dateien

Git kann auch binäre Dateiformate, wie z.B. das Dateiformat docx, in seinen Repositories verwalten und die Versionierung übernehmen. Ein kleines Problem besteht bei den Vergleichen (diff) der Versionen.
Git ist eigentlich dafür gedacht reine Flat files zu managen und nicht für binäre Dateien. Mit ein paar kleinen Handgriffen ist es jedoch möglich Git und Word miteinander zu verbinden. Vergleiche zwischen Versionen von versionierten „docx„-Dateien ist damit sehr einfach möglich.
Durch die Verwendung von Git zur Versionierung von Word-Dateien (docx) ermöglicht es den Benutzern die Vorzüge von Git zu nutzen.



Inhaltsverzeichnis

1. Möglichkeit – Git Bash

.gitconfig
.gitattributes

2. Möglichkeit – Gegenüberstellung der Dokumente in Word

1. TortoiseGit installieren
2. Nur diff-doc.js installieren
.gitconfig

Öffnet man eine docx-Datei auf einem Ubuntu, ohne einem installierten Textverarbeitungsprogramm wie LibreOffice Writer, dann wird die Datei entpackt. Man sieht dann sehr schön die Dateistruktur und erkennt auch sehr gut, weshalb der Vergleich von Dateien nicht so einfach ist, wie bei Flat files.

Entpackte docx-Datei
Entpackte docx-Datei

Es gibt dabei zwei Möglichkeiten in Git Änderungen an Word-Dateien zu verfolgen und zu vergleichen.

1. Möglichkeit – Git Bash

Bei dieser Möglichkeit wird Git Bash, also das Terminal, für den Vergleich von Word-Datei-Versionen verwendet. Eine grafische Darstellung ist hier nicht möglich.
Und der Vergleich von Word-Dateien funktioniert OHNE eine installiertes Word auf dem Git-Client.

Für diese Möglichkeit muss die Applikation „pandoc“ auf dem PC installiert werden. Die Installationsdatei lässt sich von der offiziellen Projektseite herunterladen. Nach der Installation ist die Software bereits einsatzbereit, weitere Anpassungen sind nicht erforderlich.
https://pandoc.org/installing.html

Im nächsten Schritt muss Git noch mitgeteilt werden, dass es pandoc für die „Aufbereitung“ von Word-Dateien verwenden soll.

Dazu sind die beiden Dateien zu editieren:

  1. .gitconfig
  2. .gitattributes
Anzeige/Werbung

.gitconfig

Die Datei befindet sich im Home-Verzeichnis eures Benutzers. Editieren könnt ihr die mit dem Texteditor eurer Wahl.

Fügt einfach die folgenden Zeilen am Ende der Datei hinzu:

[diff "pandoc"]
	textconv=pandoc --to=markdown
	binary=true
	prompt = false
[alias]
	wdiff = diff --word-diff=color --unified=1

.gitattributes

Die Datei könnt ihr einfach in den Root-Ordner eures Git-Repository anlegen, sollte es sie noch nicht geben.

gitattributes
gitattributes

Dort tragt ihr die Zeile ein:

*.docx diff=pandoc

Word-Dateien lassen sich anschließend mit dem Befehl vergleichen.

git wdiff Word.docx

Die Word-Datei sieht dabei wie folgt aus:

Word-Datei
Word-Datei

Änzeige der Änderungen in der Git Bash, auf der Konsole.

wdiff - Git Bash
wdiff – Git Bash

Anzeige der Änderungen in der Git GUI Git-Cola.

wdiff - Git-Cola
wdiff – Git-Cola

Anzeige der Änderungen in der Git GUI.

Kontextmenü Git GUI
Kontextmenü Git GUI
wdiff - Git-GUI
wdiff – Git-GUI

2. Möglichkeit – Gegenüberstellung der Dokumente in Word

Mit der zweiten Möglichkeit werden die Änderungen direkt in Word gegenübergestellt. Dabei wird auf die Vergleichen-Funktion direkt in Word zurückgegriffen. Die Funktion ist zu erreichen über: „Überprüfen –> Vergleichen

Word-Funktion - Vergleichen
Word-Funktion – Vergleichen

Für die Verwendung dieser Vergleichsmöglichkeit wird das JavaScript „diff-doc.js“ aus dem Git GUI TortoiseGit verwendet.
Hier habt ihr zwei Möglichkeiten:

  1. TortoiseGit auf eurem Client installieren
  2. diff-doc.js von gitlab.com laden
    1. 1. TortoiseGit installieren

      TortoiseGit ist ein Git-Client, der sich wie TortoiseSVN, als Kontextmenü in den Windows Explorer einbettet. Von dort können dann alle Funktionen aufgerufen direkt aufgerufen werden.

      TortoiseGit - Kontextmenü
      TortoiseGit – Kontextmenü

      Die Installationsdatei könnt ihr von der offiziellen Projektseite herunterladen und anschließend wie gewohnt installieren.
      https://tortoisegit.org/

      Durch die Installation der vollständigen Installation der TortoiseGit Applikation auf eurem Client wird automatisch des JavaScript mit installiert. Ihr findet das Script normalerweise im Verzeichnis „C:\Programme\TortoiseGit\Diff-Scripts

      2. Nur diff-doc.js installieren

      Für den Vergleich von Word-Dateien wird TortoiseGit nicht benötigt, sondern lediglich das JavaScript diff-doc.js. Deshalb ist es möglich nur das JavaScript herunterzuladen und für den diff zu verwenden.

      Das Script findet ihr auf TortoiseGit-Projektseite auf gitlab.com. Dort hangelt ihr euch in das Verzeichnis „tortoisegit/contrib/diff-scripts“ und ladet von dort nur die Datei „diff-doc.js“ herunter. Die Datei speichert ihr dann aschließend auf eurer Festplatte.

      diff-doc.js von gitlab.com herunterladen
      diff-doc.js von gitlab.com herunterladen

      Egal welche der beiden Möglichkeiten ihr für die Installation des JavaScripts bevorzugt, die weitere Konfiguration ist die Gleiche. Bei der dieser Vorgehensweise ist nur die „.gitconfig“ zu editieren.

      .gitconfig

      Am Ende der Datei fügt ihr die folgenden Zeilen hinzu. Achtet darauf, dass ihr das richtige Verzeichnis der diff-doc.js eintragt.

      [diff]
         tool = wdiff
      [difftool "wdiff"]
         cmd="wscript.exe "c:\\Program Files\\TortoiseGit\\Diff-Scripts\\diff-doc.js" "$LOCAL" "`pwd`/$REMOTE""
      

      Den Vergleich von in dem Git-Repository hinterlegtn Word-Dateien startet ihr mit dem Befehl

      git difftool -t wdiff test.docx
      
      wdiff starten
      wdiff starten

      Nachdem ihr die Meldung mit „Y“ bestätigt hab, öffnet sich WOrd und stellt die Versionen gegenüber.

      Versionsvergleich in Word
      Versionsvergleich in Word

      Microsoft Office beherrscht auch das reine XML-Format. Solche XML-Dateien sind Textdateien und könnten damit sofort mit Git diff genutzt werden, der Umweg über die unten beschrieben Möglichkeiten sind damit nicht mehr erforderlich.

      Anzeige/Werbung

      Weitere Git- Beiträge hier im Blog

      Git Beiträge auf strobelstefan.org

      Quellen und weiterführende Informationen