2 min read

Comment avoir une configuration Git dédiée pour un dossier

Comme Bruce Wayne, vous avez une identité secrète, et vous ne souhaitez qu'elle soit découverte dans vos commits Git. Voici comment j'y suis parvenu
Des tomates des pommes de terre qui son séparées en 2 groupe distinct
Photo by Linh Pham / Unsplash

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.

Mon dossier devs organiser autour de 2 sous-dossiers perso et work et des exemples de projets présent dedans
Voici comment se présente mon dossier devs

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 courant
  • onbranch 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.

Pour aller plus loin

Git - git-config Documentation