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 "/"?
Réponses:
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
/etc
ré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
/etc
soient 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:
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
:Ignorer certains fichiers
Modifiez
/etc/.gitignore
pour spécifier les fichiers qui ne doivent pas être suivis.Première exécution
Après la configuration, exécutez les commandes suivantes:
Si votre répertoire actuel est
etc
, vous pouvez exécuter desgit
commandes régulières , par exemple,la source
etckeeper
lors de la validation quotidienne, il vérifiera d'abord s'il/etc
est "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.*ignore
fichier :-)bzr init
--__-- ... Je recommande de toujours exécuteretckeeper uninit -f
après l'installation.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.
la source
J'utilise également
git
pour stocker et entretenir mondotfiles
, mais dans ungit bare repository
. Un guide détaillé peut être trouvé ici . J'utilise deux référentiels, un pour les utilisateurs de fichiers dot nommésmyconf
et un pour les fichiers dot de root nommésrootconf
.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!la source