Since the begining of time, since I started using git that is. I've always had a global ~/.gitconfig file with some aliases, e-mail, name and whatnot.
Being a consultant working with different customers I always forget to change it when I switch client and on top of that many of my personal projects have niklas.nihlen@client-email in the commits.
Just about to change client now so I decided to look into it and found that git since version 2.13 supports something called Conditional Configuration Icludes. But since I have a hard time grocking git's official documentation I'll show a small example instead, for future me and whoever else is intrested :).
I have a new client named client-x and I want all git commits in the client-x folder and subfolders to have the e-mail address given to me byt the client niklas@client-x, for everyting else I want to keep my personal e-mail niklas@personal. My folderstructure looks like this:
~/
├── .gitignore
├── dev/
├── personal-project-1
├── personal-project-2
├── personal-project-3
└── client-x
├── client-repo-1
└── client-repo-nI still want all my aliases and stuff to be global. So I created a new gitconfig file in the client directory ~/dev/client-x/.gitconfig just containing my client provided e-mail address:
[user]
email = niklas@client-xThen I updated my global ~/.gitconfg to make use of the [includeOf]:
[user]
name = Niklas Nihlén
email = niklas@personal
[includeIf "gitdir:~/dev/client-x/"]
path = ~/dev/client-x/.gitconfigWorks like a charm I don't need to remeber to switch e-mail addresses anymore!
Tags: git