Nicolas Le Borgne

Développeur

Vous rangez où vos projets ?

Le 23 novembre 2021

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 ?

Icone développeur

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 😀.

Source

© 2021 Nicolas Le Borgne