Fühlt sich besser an: Fast automatische Versionierung

add-folder-to-archiveImmer wieder hab ich mich nun schon mit automatischer Versionierung beschäftigt. Aber leider waren die Ansätze meist zu aufwendig oder auch zu umständlich – wenigstens für das was ich eigentlich haben wollte. Äh …. haben wollte …. ja was wollte ich denn anderes haben als die anderen?

Naja, ich bin kein Entwickler in dem Sinne. Mit geht es überwiegend darum Konfigurationsdateien und deren Änderungen halbwegs im Auge zu haben, bzw. auch nachvollziehen zu können welche Änderungen vorgenommen wurden um ggf. Fehler zu finden. Also möchte ich kein grossartiges ein- oder auschecken, keinen zentralen Server auf dem das “Master Branch” liegt oder so. Nö.

Nun gibt es verschiedene Ansätze. EtcKeeper sei da genannt und man findet auch diverse Ansätze das ganze über inotify zu automatisieren. EtcKeeper hat mir persönlich zu viel selbst gemacht. Die Lösungen mit inotify haben ihren Sinn und Zweck, allerdings für mich ein wenig übertrieben. Ich wollte das einfacher.

Ganz normales Handwerkszeug

Meine Lösung benötigt lediglich cron, git und gitk.

Beispielsweise /etc initialisieren:


cd /etc

git add .

Nun folgende Zeile in die crontab:


0 19 * * * root cd /etc; /usr/bin/git add -A; /usr/bin/git commit -a -m "autoupdate"

Fertig.

Die Zeiten kann man natürlich nach Lust und Laune anpassen und ggf. auch öfter am Tag einen Abgleich durchführen … je nach dem wie viele verschiedene Leute auf einem System arbeiten und wie viel dort passiert. GitK in dem entsprechenden Verzeichnis aufgerufen zeigt nun schnell einen Überblick über die letzten Änderungen (natürlich auch mit den git Befehlen auf der cli).

Für mich eine echt gute Lösung.

One Response to Fühlt sich besser an: Fast automatische Versionierung

  1. joschi

    Ich würde für diesen Einsatzzweck eher etwas wie incron verwenden und direkt nach dem Speichervorgang einer Datei in dem gewünschten Verzeichnis einen neuen Commit erstellen.

    Ein anderer Ansatz wäre, die Dateien in /etc überhaupt nicht mehr “händisch” zu bearbeiten, sondern ein Configuration Management System wie Ansible oder Puppet (deren Konfiguration dann wiederum versioniert wird) zu verwenden. Das funktioniert auch mit einer einzigen Maschine gut.

Hinterlasse eine Antwort

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

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>