Comment avoir une configuration Git dédiée pour un dossier
Au moment où j’ai reçu ma nouvelle machine pour le travail j’ai configuré Git pour utiliser mon nom complet et mon adresse mail professionnelle dans mon fichier ~/.gitconfig
.
Le souci avec cette configuration, c’est que quand j’ai rapatrié des projets personnels sur cette machine, ce sont ces informations là qui étaient utilisées dans mes commits, chose que je ne souhaite pas vraiment.
Une solution à ce problème est de surcharger la configuration de Git de chacun de mes projets personnels en modifiant le fichier .git/config
pour y indiquer les informations que je souhaitais.
Mais cette solution ne me convenait pas, car elle nécessite que je m’en rappelle pour chacun des nouveaux projets que je clone sur cette machine, et il y a de très fortes chances que j’oublie de le faire dans 6 mois ou 1 an.
Heureusement pour moi, j’ai pris l’habitude d’organiser mon dossier devs
afin de séparer mes projets professionnels de mes projets personnels. Je me suis donc mis en quête d’une solution me permettant d’appliquer une configuration Git pour un l’ensemble de mon dossier perso
.
Après quelques heures de recherche, j’ai fini par trouver la directive includeIf
disponible depuis Git 2.13. Cette directive permet d’inclure un fichier dans la configuration Git si les critères passés en paramètre corresponde. Les critères possibles sont :
gitdir
pour ajouter une condition sur le chemin du projet Git courantonbranch
pour ajouter une condition sur le nom de branche Git courante
Avec cette directive j’ai pu appliquer une configuration pour mon dossier perso
en ajoutant les instructions suivantes.
# ~/.gitconfig
[user]
name = Jeremy
email = my_email@pro.example.org
[includeIf "gitdir:~/dev/perso/**/*.git"]
path = ~/dev/perso/.gitconfig_include
# ~/dev/perso/.gitconfig_include
[user]
name = NotGrm
email = my_email@perso.example.org
Et voilà plus à partir de maintenant je n’aurais plus à m’inquiéter de mélanger travail et hobby dans mes projets Git.