Statamic Peak

Article

Changer d'utilisateur Git avec includeif

Dans cet article nous allons voir comment changer d'utilisateur git. À travers un cas concret, nous allons utiliser la directive includeif. Cela va nous permettre d'automatiser le changement de contexte git pour avoir différents utilisateurs qui committent en fonction de règles définies.

Introduction

Lorsque vous êtes amené à travailler sur plusieurs projets à la fois, vous devez parfois utiliser des utilisateurs git avec des adresses e-mail différentes. C'est le cas par exemple si vous travaillez à la fois sur un projet personnel et un projet pour un client qui vous a fourni une adresse @client.fr.

Cas concret

Thomas réalise des projets sous github avec son mail personnel thomas@gmail.com. Voici son .gitconfig :

[user]
    name = Thomas
    email = thomas@gmail.com
    username = tthomas

Pour travailler avec son nouveau client, il doit utiliser son adresse thomas@client.fr.

Il ne peut pas modifier son .gitconfig sinon il écrase la configuration pour son compte github personnel. Il peut faire plusieurs gitconfig et changer à chaque fois mais de cette façon il risque de se tromper et de commit avec la mauvaise adresse pour son projet. C’est ici que la directive IncludeIf prend tout son sens !

Directive IncludeIf

La directive includeif, comme son nom l'indique, permet d'inclure un fichier de configuration si une condition est remplie. Thomas va donc avoir un .gitconfig général et des .gitconfigs spécifiques en fonction d'une condition choisie par l'utilisateur, dans notre cas le dossier courant.

Dans le .gitconfig général, il va mettre la directive includeIf ainsi que le path vers les .gitconfigs spécifiques :

[includeIf "gitdir:~/workspaces/personal/"]
    path = ~/.gitconfig-personal
[includeIf "gitdir:~/workspaces/entreprisea/"]
    path = ~/.gitconfig-entreprisea

Dans .gitconfig-personal, il va mettre les informations relatives à son compte github :

[user]
    name = Thomas
    email = thomas@gmail.com
    username = tthomas

Dans .gitconfig-entreprise, il va mettre les informations relatives à son projet d'entreprise :

[user]
    name = Thomas
    email = thomas-ext@entreprise-a.com
    username=thomasext

Utilisateur par défaut

Dans votre .gitconfig vous pouvez rajouter la propriété [user] avec les informations de votre utilisateur :

[user]
    name = John default
    email = john@default-mail.com
    username = jdef
[diff]
    tool = vimdiff
[includeIf "gitdir:~/workspaces/personnal/github/"]
    path = ~/.gitconfig-personnalgithub
[includeIf "gitdir:~/workspaces/proA/"]
    path = ~/.gitconfig-entreprisea

Conclusion

Dans cet article nous avons vu une simple utilisation de la directive includeIf qui vous permet de conditionner l’injection de configuration en fonction de votre chemin. Il existe une autre condition sur la branche. Je vous invite à aller sur la documentation officielle pour en savoir plus : https://git-scm.com/docs/git-config#_includes.

Troubleshooting

Sous Windows, si votre gitdir est un chemin absolu, veillez à bien mettre :/ au début :

[includeIf "gitdir:C:/workspaces/monClient1/"]
    path = ~/.gitconfig-monclient1