Vous rangez où vos projets ?
Je cumule régulièrement des projets clonés depuis GitHub, Gitlab, voir la solution VCS du boulot ... J'avais pour habitude de tous les cloner dans un même répertoire. Cette méthode a pour inconvénients de nécessiter une configuration git
locale pour chacun des projets s'ils n'utilisent pas les identifiants par défauts. Le ~/.gitconfig
global cumulé avec des commandes git config
unitairement ne m'a jamais plu, je ne me souviens jamais des commandes. On va parler de l'inclusion conditionnelle de configuration git
, qui me simplifie la vie 🙃
Où je veux en venir ?
Je clonais mes projets dans un dossier ~/Developer
(juste pour l'icône sous MacOs 😅) avec tous mes projets plus ou moins en vrac dedans. J'étais donc obligé d'utiliser des commandes git config
au cas par cas. Avec cette histoire de configuration conditionnelle, je peux mieux organiser mon dossier ~/Developeur
avec des sous-dossiers par fournisseur VCS, genre :
~/Developper/github.com/project
~/Developer/gitlab.com/another_project
~/Developer/gitlab.boulot.com/yes_again_another_project
Et automatiser l'usage du username / email du compte VCS à utiliser !
Comment ça marche ?
Dans mes dossiers spécifiques VCS, je définis un user.name
et user.email
:
# ~/Developer/github.com/.gitconfig
[user]
name = Nicolas Le Borgne
email = coucou@coucou.com
Que j'appelle ensuite dans mon ~/.gitconfig
, via des includeIf
sur le dossier courant :
# ~/.gitconfig
[core]
excludesfile = /home/nico/.gitignore_global
editor = vim
[user]
name = Jhon Doe
email = jhon@doe.com
[includeIf "gitdir:~/Developer/github.com/"]
path = ~/Developer/github.com/.gitconfig
# etc ...
Conclusion
"Vous rangez où vos projets ?"
Je trouve que la question revient régulièrement. Nous avons tous nos petites habitudes, un dossier code
, projets
, lab
ou Developer
... Je n'avais jamais entendu de réponse plus complète. Cette fonctionnalité d'inclusion conditionnelle me permet de ranger un peu mieux mes projets et de m'abstraire de cette commande git config
que je ne retiens jamais 😀.