Versionsverwaltung von Dokumenten mit Git

Die Versionsverwaltung für Codeartefakte ist aus der Softwareentwicklung nicht mehr wegzudenken. In den letzten Jahren hat sich hier unter anderem Git sehr stark etabliert. In dem Zuge stellt sich die Frage, ob Git auch für die Versionsverwaltung von Dokumenten verwendet werden kann? Meine Antwort darauf lautet ganz klar: JA! In diesem Beitrag stelle ich mein einfaches Setup für die effektive Versionsverwaltung von Dokumenten mit Git vor.

Was für Codeartefakte hervorragend ist, kann für Dokumente doch nicht schlecht sein!

Git Logo

In unseren Projekten speichern wir sämtliche Dokumente auf zentralen Fileservern in unserem Firmennetz oder im Netzwerk unserer Kunden. Das ist sozusagen unsere Kollaborationsplattform in den Projekten. Es ist ein sehr einfaches, zugleich aber auch vielfach erprobtes Vorgehen. Ein Punkt, den ich bislang immer vermisst habe, ist die effiziente Versionierung von Dokumenten. Eine manuelle Variante ist natürlich das mehrfache Speichern von Dokumenten mit einem Namenszusatz (bspw. mit Zeitstempel, Versionsnummer, etc.). Dies kann aber sehr schnell ins Chaos führen. Aus dem Grunde verwende ich seit einiger Zeit erfolgreich Git Repositories auf den Fileservern. In diese „remote“ Repositories pushe ich regelmäßig meine lokalen Dokumentänderungen. Auch hier achte ich auf kleinteilige und überschaubare Commits der Dokumente, wie ich es aus der Softwareentwicklung gewohnt bin.
Schlussendlich möchte man auf dem Projektlaufwerk irgendwo einen Ordner haben, wo die finalen Dokumente für alle Projektbeteiligten abgelegt sind. Dieser Ordner soll sich inhaltlich aktualisieren, wenn ein Update im  Repository passiert ohne dass manuell ein Checkout oder Pull stattfindet. Dank eines kleinen post-receive Hooks wird dies völlig automatisch im Hintergrund ausgeführt.

Meine 5 Schritte zum Setup

Mit folgenden 5 Schritten kann die initiale Einrichtung eines Git Repositories zur Versionsverwaltung von Dokumenten ausgeführt werden. Als Clientumgebung kommt bei mir Windows 10 mit TortoiseGIT zum Einsatz. Mit geringen Adaptionen sollte sich das Setup aber auch auf andere Plattformen übertragen lassen.

  1. Anlegen eines Bare-Repositories in einem Unterordner auf dem Projektlaufwerk. Die Benennung des Unterordners kann beliebig sein. Ich verwende beispielsweise den Namen „00_GIT-Bare-Repository“.
  2. Anlegen eines weiteren Ordners, wo Die Dokumente vom Hook endgültig abgelegt werden sollen. Auch hier ist die Benennung beliebig.
  3. Erstellen eines Hooks im angelegten Bare-Repository im Unterverzeichnis „hooks“ mit den Namen post-receive. In dem Hook werden über zwei Variablen die Speicherpfade auf dem Fileserver referenziert. GIT_WORK_TREE  zeigt auf den endgültigen Ablageort der Dokumente und GIT_DIR auf den Ablageort des Bare-Repositories. Mein Hook sieht so aus:
  4. Im Anschluss erfolgt ein clone des remote Repositories in das lokale Verzeichnissystem des eigenen Rechners. Darin finden die zukünftigen Bearbeitungen der Dokumente statt.
  5. Zum Abschluss verstecke ich noch das Bare-Repository auf dem Fileserver über die Standardfunktion: Rechtsklick auf Ordner des Fileservers -> Eigenschaften -> Aktivierung der Checkbox „Versteckt“. Dadurch ist der Ordner standardmäßig nicht direkt sichtbar, kann jedoch ganz normal für die Arbeit mit Git verwendet werden.

 

Nun ist das einmalige Setup abgeschlossen. Ab sofort steht der Versionsverwaltung von Dokumenten mit Git nichts mehr im Wege. Dies erfolgt über Commit auf dem lokalen Clone und anschließendem Push in das Remote-Repository. Neben den Office-Dokumenten lege ich auch bspw. Bildmaterialien in dem Repository ab. Die DIFF-Funktion von Word funktioniert auch recht ordentlich, so dass man Änderungen in den Dokumenten über die einzelnen Commits nachvollziehen kann.

Ich jedenfalls bin mit dem Setup sehr zufrieden und genieße die Sicherheit der Versionsverwaltung für Dokumente. Viel Spaß beim Ausprobieren!

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*Pflichtfelder

*