====== Versionierung: git ======
Nachfolgend soll die Versionierung mit [[http://git-scm.com/|GIT]] beschrieben werden. Hintergrund ist Vorhalten mehrerer Versionen einer Datei oder bestimmter Verzeichnisse (zum Beispiel ''/etc''), damit Änderungen festgehalten werden.
\\
===== Installation =====
Für DEBIAN stehen die notwendigen Pakete im Repository bereit:
~# apt-get install git
\\
===== Erste Versionierung =====
Für die erste Versionierung eines bestimmten Verzeichnisses (nachfolgend das Verzeichnis ''/etc'') sind mehrere Schritte notwendig.
\\
* Wechsel in das zu versionierende Verzeichnis:
~# cd /etc/
\\
* Initialisierung des Repository
~# git init
\\
* Hinzufügen aller Dateien im Verzeichnis:
~# git add .
\\
* Hochladen der Dateien ins Repository:
~# git commit -m "Eine Beschreibung hinzufügen"
\\
===== Arbeitsweise =====
Alle Änderungen die im Verzeichnis vorgenommen werden, müssen in das GIT-Repository aufgenommen werden. Nachfolgend ein kleiner Auszug der Arbeitsweise mit GIT.
\\
* Anzeigen des Repository-Status (direkt nach dem Hochladen):
~# git status
# On branch master
nothing to commit (working directory clean)
\\
* Anzeigen des Repository-Status nach Änderung einer Datei (zum Besipiel ''/etc/hosts''):
git status
# On branch master
# Changes not staged for commit:
# (use "git add ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
#
# modified: hosts
#
no changes added to commit (use "git add" and/or "git commit -a")
\\
* Hochladen der geänderten Datei in das Repository:
~# git add /etc/hosts
~# git commit -m "Änderung der Datei '/etc/hosts'"
[master f05a12c] Änderung der Datei '/etc/hosts'
...
\\
* Herunterladen einer Datei aus dem Repository (Überschreiben der lokalen Datei) oder Wiederherstellen der lokal gelöschten Datei aus dem Repository:
~# git checkout -- /etc/hosts
\\
* Anzeigen der Unterschiede zwischen lokalen Dateien und den Repository-Daten:
~# 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
\\
* Aktualisieren des Repository, wenn lokal Dateien gelöscht wurden:
~# git add -u .
~# git commit -m "Lokale Datei gelöscht"
\\
* Hochladen der Änderungen zum entfernten Repository:
~# git push
\\
* Herunterladen der Änderungen vom entfernten Repository:
~# put pull origin master
//Es wird der 'master'-Zweig heruntergeladen.//
\\
===== Überwachung =====
Soll das Verzeichnis überwacht werden, damit alle Änderungen automatisch ins Repository hochgeladen werden, hilft das Programm **''watcher''**, welches [[:programme:watcher|hier]] beschrieben ist. Die Konfigurationsdatei ''/etc/watcher.ini'' wird um zwei Überwachungen ergänzt.
\\
* Überwachung auf Erstellen und Verändern einer Datei:
[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"
\\
* Überwachung auf Löschen einer Datei:
[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"
\\
* Neustart des Dienstes, damit die Änderungen wirksam werden:
~# /etc/init.d/watcher.py restart
\\
===== Datensicherung und -wiederherstellung =====
Die Sicherung und wiederherstellung eines komplettes Repository, geht über den Befehl "**''git bundle''**".
\\
* Repository in eine Datei sichern:
~# git bundle create 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.//
\\
* Wiederherstellen des Repository:
git clone -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.//
\\
\\
\\
{{tag>DEBIAN GIT Backup Restore}}