outdated: etckeeper (Debian package) solves that problem
Diese Anleitung ist minimale Modifikation von
http://jukie.net/~bart/blog/20070312134706
(Hauptänderung: Verwendung von sudo und in Deutsch)
Es wird beschrieben wie sie alle ihre Konfigurationsdateien
(Komplettes /etc) mit git tracken. Warum sie das tun wollen
kann man nicht mit kurzen Worten beschreiben :-)
cd /etc
sudo git-init-db
sudoedit .git/info/exclude
#############
# git-ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
*~
*.dpkg-new
*.dpkg-old
#############
sudo chmod og-rwx .git
Jetzt ist die Datenbank vorhanden, aber leer. Die letzte Zeile *MUSS*
sein, sonst kann jeder auf sehr sensible Daten wie /etc/shadow(!) lesend
zugreifen.
sudo git add .
sudo git commit -m"initial import"
Damit werden alle Dateien in die git Datenbank hinzugefügt. Ab diesem
Zeitpunkt kann man sich mit
git diff
ausgeben lassen was alles in der Konfiguration verändert wurde.
Bei updates der Konfiguration (z.b. neues Paket installieren) möchte
man natürlich jedesmal händisch commiten.
sudo mkdir /root/bin
sudoedit /root/bin/commit-etc
#############
#!/bin/bash
if [ -z "$1" ]
then
caller=$(ps axww | grep "^ *$$" -B3 | grep " apt-get " | head -n1 | sed 's/^.*\(apt-get .*\)/\1/' )
else
caller="$1"
fi
cd /etc
git-add .
git-commit -a -m"commit-etc: $caller"
exit 0
#############
sudo chmod +x /root/bin/commit-etc
Dieses Skript ermöglicht das commiten von etc. Je nach PATH ist vielleicht
/usr/local/sbin zu bevorzugen.
sudoedit /etc/apt/apt.conf
oder
sudoedit /etc/apt/apt.conf.d/50commit-etc
#############
DPkg {
Post-Invoke {"/root/bin/commit-etc";};
}
#############
Diese apt.conf datei kann jetzt gleich getrackt werden!
sudo git add .
sudo git commit -a -m"apt will track /etc automagically using git"
Wenn jetzt etwas installiert wird, dann werden diese Dateien automatisch
geadded und commited. Admins müssen natürlich selber add und commit
ausführen.