Suite au billet où j’expliquais comment gérer ses fichiers de configuration $HOME, avec git, mr et vcsh, j’ai décidé de me pencher plus précisément sur la configuration de myrepos alias mr. En effet maintenir un seul et même fichier pour une trentaine de dépôts cela devenait fastidieux. J’ai donc opté pour une organisation décentralisée, avec un dossier pour stocker les différents fichiers de configuration de mes dépôts, appelé par le « mrconfig ».

~ 
├── .config 
│ └── labo 
│     └── config.d
│         ├── emacs.vcsh 
│         └── zsh.vcsh 
│ 
└── .mrconfig

Dans cette configuration, j’ai un fichier par dépôts, que j’active ou désactive à souhait dans le « mrconfig ». Un fichier de dépôt est configuré de cette façon, exemple avec mon dépôt emacs:

[$HOME/.config/vcsh/repo.d/emacs.git] 
checkout = 
		vcsh clone git@labo.olivierdelort.net:colmaris/emacs.git emacs 
		vcsh emacs remote set-url --add origin git@github.com:colmaris/dotfiles-emacs.git

Le fonctionnement reste le même, je clone depuis mon Gitlab et lorsque je pousse mes modifications elles sont simultanément poussées sur mon Gitlab et sur Github.

Passons maintenant au chef d’orchestre le fichier « mrconfig » qui contrôle tout ce petit monde :

[DEFAULT]
git_gc = git gc "$@" 

include = cat ~/.config/labo/config.d/conky.vcsh 
include = cat ~/.config/labo/config.d/terminator.vcsh 
include = cat ~/.config/labo/config.d/emacs.vcsh 
include = cat ~/.config/labo/config.d/zsh.vcsh

Je renseigne tous les dépôts que j’utilise et il me suffit de commenter le dépôt concerné pour le désactiver. Et l’inverse pour l’activer. Ce fonctionnement est beaucoup plus souple dans mes habitudes de travail.