web-dev-qa-db-fra.com

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

J'utilise Gentoo Linux et sa configuration est plutôt complexe. Ma question est-elle sage d'utiliser git pour le contrôle de version de mes fichiers de configuration?

J'ai quelques git repos dans ma maison, ma conjecture si je mets/home/** à mon .gitignore ils ne poseront pas de problèmes.

Mise à jour de clarification:

Est-il sage d’utiliser git pour contrôler les versions de mes fichiers de configuration au niveau système dans le répertoire racine "/"?

17
atevm

La réponse courte à votre question est Yes.


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 la configuration de nouvelles installations) et j’ai davantage confiance en mes fichiers de configuration. Avec le contrôle de version, j'ai un enregistrement de quoi des modifications ont été apportées et le message de validation fournit la raison pourquoi la modification a été effectuée. Si un changement a des effets secondaires non souhaités, je peux facilement consulter le journal/l'historique pour voir quel changement a été à l'origine des effets.

Personnellement, je me méfierais du suivi de tous les fichiers du répertoire racine /. La liste des chemins à ignorer peut devenir volumineuse et difficile à manier. Je préfère conserver chaque ensemble logique de fichiers dans son propre référentiel.

J'utilise manuellement Git pour garder trace de mes personnels fichiers de configuration/démarrage, par exemple, la configuration de Vim, les fonctions Bash, les alias, etc. - de la même manière que l'approche indiquée dans Comment suivre $ HOME avec git . Je garde chaque ensemble de fichiers dans son propre référentiel et utilise des liens symboliques vers le répertoire de base.

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

Désavantages

Un problème à se poser est que les fichiers suivis incluent des liens physiques . Lorsque Git est utilisé pour extraire des fichiers ou 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 de fichier que les systèmes de contrôle de révision ne prennent normalement pas en charge, mais cela est important pour /etc, comme les autorisations de /etc/shadow.

Il se connecte aux gestionnaires de paquets tels qu'apt et yum et (dans sa configuration par défaut), exécute les pré et post-installations afin 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 du package, de sorte qu'il y ait deux validations:

  1. “Enregistrer les modifications non validées dans/etc avant l'exécution de yum”
  2. “Valider des modifications dans/etc après yum”

Je l’ai utilisé avec les distributions 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 n paquet est disponible .

Il prend également en charge le transfert des fichiers de configuration vers un référentiel distant ​​(qui doit bien entendu ê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 passera de Git à Bazaar. Vous voudrez peut-être aussi désactiver le auto-commits quotidiens.

Autocommits quotidiens

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

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

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

Ignorer certains fichiers

Editez /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:

Sudo etckeeper init
Sudo etckeeper commit "Initial commit"

Si votre répertoire actuel est etcname__, vous pouvez exécuter des commandes gitstandard, par exemple,

Sudo git status
Sudo git log
17
Anthony Geoghegan

J'utilise git pour suivre des zones spécifiques de mon répertoire personnel. Personnellement, je ne voudrais pas suivre 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 vous engagez:

effets de l’initialisation du référentiel git sur le répertoire racine de 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 je voulais y participer.

Modifier

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

3
Michael Stilson

J'utilise également gitpour stocker et gérer mon dotfilesname__, mais dans un git bare repository. Un guide détaillé peut être trouvé ici . J'utilise deux référentiels, l'un pour les fichiers de mes utilisateurs nommés myconfet l'autre pour les fichiers de points de la racine nommés rootconfname__.

De plus, vous pouvez utiliser les deux configurations sur de nombreuses machines, des distributions Linux différentes ou des 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 d'ennuyeux s'il n'est plus nécessaire de vérifier la machine actuelle; plus aucun lien nécessaire!

0
Chris