Ist es eine gute Idee, git für die Versionskontrolle der Konfigurationsdatei zu verwenden?

18

Ich benutze Gentoo Linux und es hat eine ziemlich komplexe Konfiguration. Meine Frage ist es ratsam, Git für die Versionskontrolle meiner Konfigurationsdateien zu verwenden?

Ich habe einige Git-Repos in meinem Haus. Wenn ich "/ home / **" auf ".gitignore" setze, werden sie keine Probleme verursachen.

Update zur Klärung:

Ist es eine kluge Methode, git zur Versionskontrolle meiner Konfigurationsdateien auf Systemebene im Stammverzeichnis "/" zu verwenden?

atevm
quelle
@AnthonyGeoghegan Ich möchte mein "/" - Stammverzeichnis nachverfolgen, was in Zukunft zu interessanten Konsequenzen führen kann, sodass der verknüpfte Thread meine Frage nur teilweise beantwortet. Der andere Teil:
Ist es ratsam,
1
@AnthonyGeoghegan danke. Ich habe die Frage aktualisiert.
9.

Antworten:

19

Die kurze Antwort auf Ihre Frage lautet Ja .


Ich würde ohne zu zögern Git (oder eine andere Versionskontrollsoftware) empfehlen, um den Überblick über die Konfigurationsdateien zu behalten. Seitdem bin ich produktiver (insbesondere beim Konfigurieren neuer Installationen) und habe mehr Vertrauen in meine Konfigurationsdateien. Mit Versionskontrolle habe ich eine Aufzeichnung von welche Änderungen vorgenommen wurden, und die Festschreibungsmeldung gibt den Grund an, warum die Änderung vorgenommen wurde. Wenn eine Änderung unbeabsichtigte Nebenwirkungen hat, kann ich das Protokoll / den Verlauf leicht überprüfen, um festzustellen, welche Änderung die Auswirkungen verursacht hat.

Persönlich wäre ich vorsichtig, wenn ich alle Dateien im /Stammverzeichnis verfolgen würde . Die Liste der zu ignorierenden Pfade kann umfangreich und unhandlich werden. Ich bevorzuge es, jede logische Gruppe von Dateien in einem eigenen Repository zu speichern.

Ich verwende Git manuell, um meine persönlichen Konfigurations- / Startdateien zu protokollieren, z. B. Vim-Konfiguration, Bash-Funktionen, Aliase usw. - ähnlich wie in aufgeführt So verfolgen Sie $ HOME mit git . Ich behalte jede Gruppe von Dateien in einem eigenen Repository und verwende symbolische Links zum Ausgangsverzeichnis.

Für System - Konfigurationsdateien, verwende ich Git mit etckeeper Spur von Dateien in meinem zu halten /etcVerzeichnis.

Nachteile

Seien Sie vorsichtig, wenn die verfolgten Dateien feste Links enthalten . Wenn Git zum Auschecken von Dateien oder zum Ändern des Arbeitsbaums verwendet wird, werden die Verknüpfungen zwischen Dateien aufgehoben und diese anschließend neu erstellt . Siehe Git, Dotfiles und Hardlinks .

Etckeeper

Mit Etckeeper kann ein vollständiger Verlauf der an / etc. Vorgenommenen Änderungen geführt werden. Es werden Dateimetadaten nachverfolgt, die von Revisionskontrollsystemen normalerweise nicht unterstützt werden. Dies ist jedoch wichtig /etc, z. B. für die Berechtigungen von /etc/shadow.

Es lässt sich in Paketmanager wie apt und yum einbinden und führt (in der Standardkonfiguration) die Vor- und Nachinstallation durch, damit alle Änderungen /etcnachverfolgt werden.

Wenn ein Paket installiert oder entfernt wird, werden alle nicht festgeschriebenen Änderungen in / etc vor der Paketoperation festgeschrieben, sodass zwei Festschreibungen erfolgen:

  1. "Speichern nicht festgeschriebener Änderungen in / etc vor dem Start"
  2. "Änderungen in / etc nach yum run vornehmen"

Ich habe es mit Debian- und Red Hat-basierten Distributionen verwendet und weiß, dass es die Arch-Paketverwaltung unterstützt. Ich kann nicht sagen, wie viel Automatisierung ein Gentoo-System hinzufügen würde, aber ein Paket ist dafür verfügbar .

Es unterstützt auch das Verschieben der Konfigurationsdateien in ein Remote-Repository (das natürlich privat sein sollte).

Aufbau

Nach der Installation des Pakets müssen Sie es möglicherweise konfigurieren ( /etc/etckeeper/etckeeper.conf), z. B. wird auf Ubuntu-Systemen das Standardversionskontrollsystem von Git auf Bazaar geändert. Sie können auch die täglichen automatischen Festschreibungen deaktivieren .

Tägliche Autocommits

Änderungen können automatisch von einem täglichen Cron-Job übernommen werden . Dies kann ärgerlich sein, da das Repository mit mehreren automatisierten Festschreibungsnachrichten überfüllt sein kann.

Ich kommentiere die entsprechende Zeile in /etc/etckeeper/etckeeper.conf:

sed -i '/AVOID_DAILY_AUTOCOMMITS/s|^#* *||' /etc/etckeeper/etckeeper.conf

Ignoriere bestimmte Dateien

Bearbeiten /etc/.gitignore, um alle Dateien anzugeben, die nicht verfolgt werden sollen.

Erster Lauf

Führen Sie nach der Konfiguration die folgenden Befehle aus:

sudo etckeeper init
sudo etckeeper commit "Initial commit"

Wenn Ihr aktuelles Verzeichnis ist etc, können Sie reguläre gitBefehle ausführen, z.

sudo git status
sudo git log
Anthony G - Gerechtigkeit für Monica
quelle
1
Wow, es war sehr nützlich und detailliert ... danke :)
atevm
Nur um eine sehr gut geschriebene Antwort zu aktualisieren : Beim etckeepertäglichen Festschreiben wird zuerst /etcgeprüft, ob "unclean" ist, dh ob nicht festgeschriebene Dateien vorhanden sind. Wenn nicht, wird es nicht festgeschrieben. Wenn Ihr Commit-Protokoll also mit täglichen Commits gefüllt ist, gibt es möglicherweise Dateien, die täglich geändert werden und die Sie der .*ignoreDatei nicht hinzugefügt haben :-)
pepoluan
Auch auf Ubuntu hat es diese lästigen Tendenz sofort ausführen ein bzr init--__-- ... Ich empfehle immer läuft etckeeper uninit -fnach der Installation.
Pepoluan
Beachten Sie, dass etckeeper offensichtlich nicht mehr auf Github gehostet wird. Sie nutzen jetzt ihr eigenes System auf ihrer Homepage. Wahrscheinlich etwas Abneigung gegen den Autor. Persönlich finde ich das eine unglückliche Entscheidung, da Sie Probleme nicht so einfach melden können und nicht sehen können, wie beliebt das Projekt ist.
Michael Härtl
Danke @ MichaelHärtl Ich habe den veralteten Link zum GitHub-Repo entfernt.
Anthony G - Gerechtigkeit für Monica
3

Ich benutze git, um bestimmte Bereiche meines Home-Verzeichnisses zu verfolgen. Persönlich würde ich mich nicht auf den Weg machen, das Stammverzeichnis zu verfolgen, aber ich muss sagen, dass ich Ihren Ehrgeiz bewundere. :)

Vielleicht kann Ihnen diese Sammlung von Erfahrungen eine bessere Vorstellung davon geben, worauf Sie sich einlassen:

Auswirkungen der Initialisierung des Git-Repository auf das Linux-Stammverzeichnis 3 :)

Entschuldigung für eine "Antwort", anstatt nur den Link in einen Kommentar zu werfen; Allerdings nicht genug Repräsentant, aber ich wollte mitmachen.

Bearbeiten

Beeindruckend! Sehr nette Antwort von @AnthonyGeoghegan. Ich glaube, das ist kein so großer Kampf, wie ich ihn mir ursprünglich vorgestellt habe.

Michael Stilson
quelle
0

Ich verwende auch git, um meine dotfiles, aber in einem zu speichern und zu pflegen git bare repository. Eine ausführliche Anleitung finden Sie hier . Ich verwende zwei Repositorys, eines für die Dotfiles meiner Benutzer myconfund eines für die Dotfiles von rootrootconf .

Außerdem können Sie beide Konfigurationen auf vielen Computern, verschiedenen Linux-Distributionen oder virtuellen Computern verwenden: Erstellen Sie einfach einen neuen Zweig für eine bestimmte Konfiguration. Dann vermeiden Sie das Verwechseln von Code in derselben Datei (z. B. .bash_alias): Es ist nicht ärgerlich, wenn Sie die aktuelle Maschine nicht mehr überprüfen möchten. keine links nötig

Chris
quelle