42 votes

Est-il mal de git init dans le répertoire $home pour suivre les fichiers point?

Je veux sauvegarder et synchroniser mes dotfiles en utilisant github. Puisque tous les dotfiles résident dans $home par défaut, devrais-je simplement git init dans mon dossier $home, ou est-ce une mauvaise idée?

Ayant effectué git init dans $home, mon idée est ensuite d'ignorer tous les fichiers qui ne sont pas des dotfiles et des dotfolders avec un fichier .gitignore.

58voto

Ravexina Points 50599

Créez un dépôt git "nul":

cd $HOME
git init --bare .dotfiles

Le drapeau --bare crée un dépôt qui n'a pas de répertoire de travail, ce qui rend impossible l'édition de fichiers et la validation des changements dans ce dépôt.

Créez un alias pour gérer le dépôt que nous venons de créer:

alias dotfiles="/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME"

Ignorez les fichiers non suivis pour qu'ils n'apparaissent pas dans git status:

dotfiles config --local status.showUntrackedFiles no

Ajoutez vos fichiers désirés:

dotfiles add .bash_aliases

Validez.

dotfiles commit -m 'Ajouter .bash_aliases'

Maintenant, avec l'utilisation d'un dépôt nul, il n'y a pas de répertoire .git dans votre répertoire $HOME; donc cela ne provoque pas de surprises lors de l'utilisation de git.

C'est ainsi que je gère mes dotfiles. J'ai d'abord lu à ce sujet ici il y a plusieurs années.

14voto

neves Points 1044

C'est une bonne pratique, mais vous devriez ignorer tous les fichiers par défaut et ajouter uniquement les fichiers dont vous avez besoin. Voici un exemple d'un .gitignore:

# ignorer tout
*
# inclure les fichiers pointés (y compris .gitignore)
!.*

Vous pouvez également exclure d'autres fichiers en ajoutant d'autres lignes à la fin de votre .gitignore :

# ignorer tout
*
# inclure les fichiers pointés (y compris .gitignore)
!.*
.ssh

12voto

Jonas Kölker Points 241

Si vous êtes un peu enclin à hésiter à avoir un dépôt git dans votre dossier personnel (ce que je serais), vous pourriez envisager cette idée :

  • Créez un dépôt git ailleurs, par exemple ~/src/configuration ou ~/etc ou où vous le souhaitez.
  • Placez tous vos fichiers de configuration là-dedans.
  • Remplacez vos fichiers de configuration (aux chemins normaux) par des liens symboliques vers ce dépôt.
  • Écrivez éventuellement un script shell simple qui vérifie que les liens symboliques pointent là où vous vous attendez, et exécutez-le par exemple tous les jours dans une tâche cron.

Tout problème en informatique peut être résolu avec une couche d'indirection supplémentaire ;-)

8voto

Eugene Yokota Points 43213

Je dirais que c'est une mauvaise pratique, en effet. Aucun des tutoriels sur https://dotfiles.github.io/tutorials/ ou https://github.com/webpro/awesome-dotfiles ne vous demandera de suivre le dossier home directement dans un dépôt git de niveau home. La plupart copieront manuellement ou créeront des liens symboliques des fichiers.

Alors que suivre vos dotfiles avec git est une excellente idée, avoir un dépôt git au niveau home rend facile de lancer accidentellement des commandes sur ce dépôt lorsque vous voulez en réalité le faire dans un dépôt de répertoire plus spécifique.

Par exemple:

mkdir ~/Projets/mon-super-site-web
cd ~/Projets/mon-super-site-web
npm init # initialise les projets node, crée package.json
git add package.json # ne produira pas d'erreur, car il est en fait à l'intérieur d'un dépôt git
git commit -m "débute le travail" # commet en réalité sur le dépôt home, pas localement

De plus, Anish Athalye choisit de ne pas suivre le dossier home directement sous git:

  • Il n'y a aucune possibilité de supprimer accidentellement vos fichiers. Avec l'ensemble de votre répertoire home sous contrôle de version, exécuter quelque chose comme un git clean pourrait effacer tout dans votre répertoire home qui n'est pas suivi par votre VCS.
  • Il est possible de suivre les fichiers de configuration qui appartiennent ailleurs que dans $HOME.
  • L'installation des dotfiles sur de nouvelles machines est plus facile. Tout ce qui est requis est de cloner vos dotfiles suivis de la copie ou la création de liens des fichiers. Garder l'ensemble du répertoire home sous contrôle de version complique l'installation.

7voto

Juli Jana Points 31

Vous pourriez regarder yadm, il fait principalement cela mais je suppose que c'est plus sécurisé et que la configuration est peut-être plus facile. Je pense que c'est simplement un wrapper de git au départ (il a cependant plus de fonctionnalités), ce qui signifie que vous pouvez simplement utiliser les commandes git habituelles en remplaçant git par yadm (comme yadm add/clone/status etc.)

Je ne suis pas affilié à yadm, juste un utilisateur satisfait.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X