Nachfolgend soll die Versionierung mit GIT beschrieben werden. Hintergrund ist Vorhalten mehrerer Versionen einer Datei oder bestimmter Verzeichnisse (zum Beispiel /etc
), damit Änderungen festgehalten werden.
Für DEBIAN stehen die notwendigen Pakete im Repository bereit:
~# apt-get install git
Für die erste Versionierung eines bestimmten Verzeichnisses (nachfolgend das Verzeichnis /etc
) sind mehrere Schritte notwendig.
~# cd /etc/
~# git init
~# git add .
~# git commit -m "Eine Beschreibung hinzufügen"
Alle Änderungen die im Verzeichnis vorgenommen werden, müssen in das GIT-Repository aufgenommen werden. Nachfolgend ein kleiner Auszug der Arbeitsweise mit GIT.
~# git status # On branch master nothing to commit (working directory clean)
/etc/hosts
):git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: hosts # no changes added to commit (use "git add" and/or "git commit -a")
~# git add /etc/hosts ~# git commit -m "Änderung der Datei '/etc/hosts'" [master f05a12c] Änderung der Datei '/etc/hosts' ...
~# git checkout -- /etc/hosts
~# git diff diff --git a/hosts b/hosts index 3126eb2..812e530 100644 --- a/hosts +++ b/hosts @@ -1,4 +1 @@ 192.168.10.135 usb -127.0.0.1 localhost
~# git add -u . ~# git commit -m "Lokale Datei gelöscht"
~# git push
~# put pull origin master
Es wird der 'master'-Zweig heruntergeladen.
Soll das Verzeichnis überwacht werden, damit alle Änderungen automatisch ins Repository hochgeladen werden, hilft das Programm watcher
, welches hier beschrieben ist. Die Konfigurationsdatei /etc/watcher.ini
wird um zwei Überwachungen ergänzt.
[etc-git-add] watch=/etc events=create,modify,write_close excluded=/etc/.git recursive=true autoadd=true command=cd /etc/ && git add $filename && git commit -m "Erstellen oder Verändern der Datei: $filename"
[etc-git-remove] watch=/etc events=delete excluded=/etc/.git recursive=true autoadd=true command=cd /etc/ && git add -u $filename && git commit -m "Löschen der Datei: $filename"
~# /etc/init.d/watcher.py restart
Die Sicherung und wiederherstellung eines komplettes Repository, geht über den Befehl „git bundle
“.
~# git bundle create <Dateiname> master Counting objects: 1421, done. Delta compression using up to 4 threads. Compressing objects: 100% (1369/1369), done. Writing objects: 100% (1421/1421), 152.35 KiB, done. Total 1421 (delta 977), reused 0 (delta 0)
Voraussetzung für das erfolgreiche durchführen des Befehls ist, dass im aktuellen Verzeichnis ein GIT-Repository vorhanden ist.
git clone <Dateiname> -b master . Cloning into '.'... Receiving objects: 100% (1421/1421), 152.35 KiB, done. Resolving deltas: 100% (977/977), done.
Die Dateien werden im aktuellen Verzeichnis wiederhergestellt.