Est-ce une bonne idée d'utiliser git pour contrôler la version du fichier de configuration?

18

J'utilise Gentoo Linux et sa configuration est assez complexe. Ma question est-il sage d'utiliser git pour contrôler la version de mes fichiers de configuration?

J'ai quelques git repos dans ma maison, je suppose que si je mets / home / ** dans mon .gitignore, cela ne causera pas de problèmes.

Mise à jour de clarification:

Est-ce une méthode judicieuse d'utiliser git pour contrôler la version de mes fichiers de configuration de niveau système dans le répertoire racine "/"?

atevm
la source
@AnthonyGeoghegan Je veux suivre mon répertoire racine "/" ce qui peut entraîner des conséquences intéressantes à l'avenir, de sorte que le fil lié ne répond que partiellement à ma question. L'autre partie: est-il sage d'utiliser git pour contrôler la version de mes fichiers de configuration toujours sans réponse
atevm
1
@AnthonyGeoghegan merci. J'ai mis à jour la question.
atevm

Réponses:

19

La réponse courte à votre question est Oui .


Je n'hésiterais pas à recommander Git (ou tout autre logiciel de contrôle de version) pour garder une trace des fichiers de configuration. Depuis, j'ai été plus productif (en particulier pour configurer de nouvelles installations) et j'ai une plus grande confiance dans mes fichiers de configuration. Avec le contrôle de version, j'ai un enregistrement des modifications qui ont été apportées et le message de validation fournit la raison pour laquelle la modification a été effectuée. Si un changement a des effets secondaires imprévus, je peux facilement consulter le journal / l'historique pour voir quel changement a causé les effets.

Personnellement, je me méfierais de suivre tous les fichiers dans le /répertoire racine. La liste des chemins à ignorer pourrait devenir longue et lourde. Je préfère conserver chaque ensemble logique de fichiers dans leur propre référentiel.

J'utilise manuellement Git pour garder une trace de mes fichiers de configuration / démarrage personnels , par exemple, la configuration Vim, les fonctions Bash, les alias, etc. - similaire à l'approche répertoriée dans Comment suivre $ HOME avec git . Je garde chaque ensemble de fichiers dans leur propre référentiel et j'utilise des liens symboliques vers le répertoire personnel.

Pour les fichiers de configuration système , j'utilise Git avec Etckeeper pour garder une trace des fichiers dans mon /etcrépertoire.

Désavantages

Un problème à se méfier est de savoir si les fichiers suivis incluent des liens durs . Lorsque Git est utilisé pour extraire des fichiers ou autrement modifier l'arborescence de travail, il dissocie les fichiers, puis les recrée . Voir Git, Dotfiles et Hardlinks pour une explication plus complète.

Etckeeper

Etckeeper peut être utilisé pour conserver un historique complet des modifications apportées à / etc. Il suit les métadonnées des fichiers que les systèmes de contrôle des révisions ne prennent normalement pas en charge, mais cela est important pour /etc, comme les autorisations de /etc/shadow.

Il se connecte aux gestionnaires de packages tels qu'apt et yum et (dans sa configuration par défaut), exécute avant et après l'installation de sorte que toutes les modifications apportées /etcsoient suivies.

Si un package est installé ou supprimé, toutes les modifications non validées dans / etc seront validées avant l'opération de package afin qu'il y ait deux validations:

  1. «Sauvegarde des modifications non validées dans / etc avant l'exécution de yum»
  2. "Validation des modifications dans / etc après l'exécution de yum"

Je l'ai utilisé avec des distributions basées sur Debian et Red Hat et je sais qu'il prend en charge la gestion des paquets Arch. Je ne peux pas dire combien d'automatisation cela ajouterait à un système Gentoo mais un package est disponible pour cela .

Il prend également en charge la transmission des fichiers de configuration vers un référentiel distant (qui doit bien sûr être privé).

Configuration

Après avoir installé le paquet, vous devrez peut-être le configurer ( /etc/etckeeper/etckeeper.conf), par exemple, sur les systèmes Ubuntu, le système de contrôle de version par défaut passe de Git à Bazaar. Vous pouvez également désactiver les validations automatiques quotidiennes .

Autocommits quotidiens

Les modifications peuvent être automatiquement validées par un travail cron quotidien . Cela peut être gênant car le référentiel peut être encombré de plusieurs messages de validation automatisés.

Je décommente la ligne appropriée dans /etc/etckeeper/etckeeper.conf:

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

Ignorer certains fichiers

Modifiez /etc/.gitignorepour spécifier les fichiers qui ne doivent pas être suivis.

Première exécution

Après la configuration, exécutez les commandes suivantes:

sudo etckeeper init
sudo etckeeper commit "Initial commit"

Si votre répertoire actuel est etc, vous pouvez exécuter des gitcommandes régulières , par exemple,

sudo git status
sudo git log
Anthony G - justice pour Monica
la source
1
Wow, c'était très utile et détaillé ... merci :)
atevm
Juste pour mettre à jour une réponse très bien écrite: etckeeperlors de la validation quotidienne, il vérifiera d'abord s'il /etcest "impur", c'est-à-dire qu'il contient des fichiers non validés. Sinon, il ne s'engage pas. Donc, si votre journal de validation est plein de validations quotidiennes, il y a des chances que des fichiers changent quotidiennement que vous n'avez pas ajoutés au .*ignorefichier :-)
pepoluan
En outre, sur Ubuntu, il a cette tendance gênante à exécuter immédiatement un bzr init--__-- ... Je recommande de toujours exécuter etckeeper uninit -faprès l'installation.
pepoluan
Notez que etckeeper n'est évidemment plus hébergé sur github. Ils utilisent maintenant leur propre système sur leur page d'accueil. Probablement une certaine aversion de M $ du côté de l'auteur. Personnellement, je trouve que c'est une décision malheureuse car maintenant vous ne pouvez pas facilement signaler les problèmes et ne pouvez pas voir à quel point le projet est populaire.
Michael Härtl
Merci @ MichaelHärtl J'ai supprimé le lien obsolète vers le dépôt GitHub.
Anthony G - justice pour Monica
3

J'utilise git pour suivre des zones spécifiques de mon répertoire personnel. Personnellement, je n'irais pas sur le chemin du suivi du répertoire racine, mais je dois dire que j'admire votre ambition. :)

Peut-être que cette collection d'expériences pourrait vous donner une meilleure idée de ce dans quoi vous pourriez vous embarquer:

effets de l'initialisation du dépôt git sur le répertoire racine linux 3 :)

Toutes mes excuses pour une "réponse", au lieu de simplement jeter le lien dans un commentaire; cependant, pas assez de représentants, mais souhaitait sonner.

Éditer

Hou la la! Très belle réponse de @AnthonyGeoghegan. Je crois que ce n'est pas autant une lutte que je l'avais envisagé à l'origine.

Michael Stilson
la source
0

J'utilise également gitpour stocker et entretenir mon dotfiles, mais dans un git bare repository. Un guide détaillé peut être trouvé ici . J'utilise deux référentiels, un pour les utilisateurs de fichiers dot nommés myconfet un pour les fichiers dot de root nommés rootconf.

De plus, vous pouvez utiliser les deux configurations sur de nombreuses machines, différentes distributions Linux ou machines virtuelles: créez simplement une nouvelle branche pour une configuration distincte. Ensuite, vous évitez de mélanger le code dans le même fichier (par exemple .bash_alias): Pas de gêne si c'est pour vérifier la machine actuelle plus; aucun lien nécessaire!

Chris
la source