The situation is as follows:
Per domain, I want to use a different email address as part of author/committer information. That is, I want my private address to be listed in my free-time projects and my company address in my professional ones.
git config
knows 3 scopes: repository, global and system-wide. What I basically need is a 4th scope between repository and global, representing a group of repositories (or simply a directory in the file system).
It seems like git config
doesn't allow that. Of course I could set the email address per repository, but I want to avoid this manual step every time I set up or clone a repository. One option would be to write a script that wraps git init/clone
and git config
, are there other ideas?
Based on https://stackoverflow.com/a/44036640/2377961 I think I found a way how it could work.
First, you create different config files for your "custom-scopes" (e.g. professional, freetime, ect.) and add your desired user-config for each scope
# ~/all-projects.gitconfig
[user]
name = TheOperator
# ~/professional.gitconfig
[user]
email = yourname@yourwork.com
# ~/freetime.gitconfig
[user]
email = yourname@private-email.com
than you add lines like this in your standard gitconfig:
# ~/.gitconfig
[include]
path = all-projects.gitconfig
[includeIf "gitdir/i:c:/work/"]
path = professional.gitconfig
[includeIf "gitdir/i:c:/freetime/"]
path = freetime.gitconfig
The directories after gitdir/i
should match the parents directory of your project groups.
In my example you should store your git-repos for freetime-domains e.g. c:/freetime/my-freetime.domain/.git