Sous Unix, nous avons moult fichiers de configuration, souvent cachés parce
que commençant par un ‘.’. Par exemple le fichier .bashrc
. Il peut être
intéressant de conserver un historique de ces fichiers et de pouvoir
les réutiliser sur une autre machine.
L’idée est donc de mettre ces fichiers dans un dépôt git
et de
les pousser réguliement vers le serveur (si possible externe).
Vous devez donc disposer d’un serveur git
opérationnel, d’une connaissance des
commandes git
et d’une dose de courage.
Un dépôt bare
Sur votre serveur, créez un dépôt bare
que vous appellerez, par exemple,
dotfiles.
% mkdir dotfiles
% cd dotfiles
% git init -bare
Cloner le dépôt bare
Sur votre machine, clonez le dépôt bare
créé plus haut :
% git clone https://mon_serveur/depots/dotfiles .dotfiles
Cloning into '.dotfiles'...
warning: You appear to have cloned an empty repository
done.
Gérez les fichiers et répertoire dot
C’est l’opération la plus délicate et la plus rébarbative de la mise en place.
Pour chacun des fichiers que vous voulez voir mis dans le dépôt, déplacer ce fichier dans le répertoire du dépôt que vous venez de cloner et faites un lien symbolique, depuis ce fichier vers sa place initiale. Compliqué ? Pas tant que ça, voyez plutôt (l’ami de Mickey).
j’ai ajouté un répertoire avec le nom de ma machine
${HOSTNAME}
pour me permettre de gérer les fichiers dot de plusieurs ordinateurs. Je pourrais ajouter une indirection de plus avec le type de machine, serveur ou poste de travail.
% cd ①
% mv .bashrc ~/.dotfiles/tarzan ②
% ln -s /.dotfiles/tarzan/.bashrc ③
① on s’assure d’être dans son répertoire HOME ;
② on déplace le fichier bashrc
dans le répertoire cloné ;
③ on crée un lien symbolique depuis la version du répertoire cloné vers notre
${HOME}
On procède de la même manière pour les répertoires, par exemple .config
.
Gestion git
Ensuite, c’est de la gestion git
basique.
% cd ~/.dotfiles/
% git add
% git commit -m "Commit initial" -a
% git push https://mon_serveur/depots
Le plus de Monsieur Git
Dans les fichiers que je veux gérer se trouve le répertoire .vim
qui lui-même
contient des clones des greffons que j’utilise. Ceux-ci doivent être ajoutés en
temps que submodules
Cela se fait assez facilement, une fois que l’on a compris le principe. En utilisant des submodules, vous vous assurez d’avoir la dernière version.
git add submodule <URL> <PATH>
Pour le module vim-mardown
que j’utilise pour écrire ce billet, voilà ce que
cela donne (à adapter votre configuration) :
git submodule add https://github.com/preservim/vim-markdown .dotfiles/tarzan/.vim/pack/plugins/start/vim-markdown
Et la suite ?
La suite est simple à chaque modification de l’un de ces fichiers, il faut penser
faire le git commit
et le git push
pour maintenir votre dépôt à jour.
Conclusion
Il existe des scripts ou d’autres méthodes pour la gestion des dotfiles. J’ai préféré ne pas réinventer la roue et faire cela avec des commandes simple, souvent connues de toustes, pour ne pas ajouter à des cerveaux déjà encombrés des commandes supplémentaires.