Suite à un article 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, appelait 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 est sur Github.

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

-- mode: sh -- [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 d’un « # » pour désactiver le dépôt concerné. Et l’inverse pour l’activer. Ce fonctionnement est beaucoup plus souple dans mes habitudes de travail.