15 August 2013

Konfigurationsdateien verwalten mit vcsh

Kategorien: HowTos

Die meisten Linuxnutzer haben eine Vielzahl von Konfigurationsdateien für Programme wie vim, bash, ssh oder ähnliches. Wenn man mehrere Arbeitsplätze hat, dann kommt schnell der Wunsch auf diese Konfigurationsdateien synchron zu halten. Da dieses in Handarbeit auf Dauer recht umständlich ist, haben sich Programme wie vcsh etabliert, die Konfigurationsdateien in Versionskontrollsystemen verwalten.

vcsh setzt an dieser Stelle ganz auf das etabliert git Versionskontrollsystem. Was für den Linux Kernel gut ist, dass kann für Konfigurationsdateien nicht schlecht sein.

vcsh findet sich unter https://github.com/RichiH/vcsh . Die Benutzer Debian-basierter Distributionen können vcsh für gewöhnlich via apt-get installieren. Nach der Installation muss man sich überlegen ob man alle Konfigurationsdateien in einem Repository verwalten möchte, oder beispielsweise pro Applikation in jeweils einem Repository. In unserem Beispiel entscheiden wir uns dafür, mehrere Repositorys zu verwenden. Das hat den Vorteil, dass wir uns bei jedem System entscheiden können welche Konfigurationsdateien wir installieren möchten.

Für den Anfang begnügen wir uns mit der ZSH Konfiguration.

Am Anfang steht immer die Initialisierung des Repositorys:

# vcsh init zsh
vcsh: info: attempting to create '/home/formorer/.config/vcsh/repo.d'
vcsh: info: attempting to create '/home/formorer/.gitignore.d'
Initialized empty Git repository in /home/formorer/.config/vcsh/repo.d/zsh.git/

Anschliessend können wir Dateien oder Verzeichnisse hinzufügen:

# vcsh zsh add .zshrc.local .zsh.d

Diesen Prozess können wir nun beliebig wiederholen. Nachdem wir mit dem hinzufügen von Dateien oder Verzeichnissen fertig sind, müssen wir unsere Änderungen noch abschliessen (committen).

# vcsh zsh commit -m 'Initial commit'
 [master (root-commit) 540c022] Initial commit
 1 file changed, 67 insertions(+)
 create mode 100644 .zshrc.local

 

Wenn wir nun etwas ändern, dann können wir das mittels vcsh nachvollziehen:

# echo "# Dies ist ein Kommentar" >> .zshrc.local
vcsh zsh diff
diff --git a/.zshrc.local b/.zshrc.local
index 450644e..47885a2 100644
--- a/.zshrc.local
+++ b/.zshrc.local
@@ -65,3 +65,4 @@ export CVS_RSH=ssh
 dquilt() { quilt --quiltrc=${HOME}/.quiltrc-dpkg "$@"; }  
 compdef dquilt=quilt
 #zstyle :prompt:grml(|-large|-chroot):*:items:user pre %F{red}
+# Dies ist ein Kommentar

Wenn wir damit zufrieden sind können wir einfach alle Änderungen im zsh Repository schreiben:

# vcsh zsh commit -a -m 'test'
 [master 498cc62] test
 1 file changed, 1 insertion(+)

Solange die Konfigurationsdateien nur lokal verwaltet werden ist der eigentliche Nutzen von vcsh recht begrenzt. Daher wurde ein Repository auf github erstellt. Dieses können wir vcsh nun als entfernte Quelle übergeben:

# vcsh zsh remote add origin git@github.com:formorer/vcsh-zsh.git
anschliessend laden wir unser Repository in das neu erstellte Repo
# vcsh zsh push -u origin master
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 1.59 KiB | 0 bytes/s, done.
Total 6 (delta 1), reused 0 (delta 0)
To git@github.com:formorer/vcsh-zsh.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

Nach diesem initialen Push reicht das Kommando vcsh zsh push um Änderungen Richtung github zu übertragen.

Wenn wir jetzt einen neuen Rechner in Betrieb nehmen, dann können wir sehr einfach das Repository clonen:

# vcsh clone git@github.com:formorer/vcsh-zsh.git zsh
vcsh: info: attempting to create '/home/test/.config/vcsh/repo.d'
Initialized empty Git repository in /home/test/.config/vcsh/repo.d/zsh.git/
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (3/3), done.
Unpacking objects: 100% (6/6), done.
remote: Total 6 (delta 1), reused 6 (delta 1)
From github.com:formorer/vcsh-zsh
 * [new branch]      master     -> origin/master

Nach diesem Kommando stehen unsere Konfigurationsdateien wieder zur Verfügung. vcsh zsh pull aktualisiert das Repository später auf den aktuellen Stand.

Wenn man mehrere Repositorys verwendet, dann kann man den Namen des Repositorys auch weglassen. In diesem Fall werden alle Repositorys aktualisiert:

# vcsh pull
zsh: Already up-to-date.

Weitere Informationen zu vcsh findet man auf der Projektwebseite: https://github.com/RichiH/vcsh

Kategorien: HowTos

über den Autor

Alexander Wirt

Senior Berater

zur Person

Alexander ist seit 1996 in der Open Source-Welt unterwegs und hat bei verschiedensten Open Source-Projekten mitgewirkt. Aktuell ist er im Debian- und GRML-Projekt aktiv. Auch bei credativ zählt er seit 2004 zu den Urgesteinen. Hier bei ist er derzeit als Projekt- und Teamleiter unterwegs und versucht die Kunden mit kreativen Lösungen für schwierige Probleme zu unterstützen.

Beiträge ansehen


Beitrag teilen: