git-configのConditional includesでユーザ情報を切り替える

会社のPCで、githubからcloneしてきたリポジトリには、個人のメールアドレスを使用するように設定するんだけど、たまに設定ミスってて会社のメールアドレスでコミットすることがある。別に弊害はないんだけど、あまりうれしくない。

git 2.13 から提供された機能にConditional includes というのがあって、条件に応じて設定ファイルを読み込むことができるようになっている。 この機能を使用して、コミット時のユーザー情報を切り替えるように設定した。

設定方法

gitdirがどこにあるか、で設定を変更できるらしい。

; include for all repositories inside $HOME/to/group
[includeIf "gitdir:~/to/group/"]
    path = /path/to/foo.inc

今はGOPATHを ~/projects に設定しているので、

会社のコード:~/projects/src/gitlab.syanai/projectA/repositoryA
個人のコード:~/projects/src/github.com/kawaken/repository

のような形でリポジトリが配置されている。

~/projects/src/github.com 配下のリポジトリはすべて個人のメールアドレスを使用するように設定する。

$HOME/.gitconfig

[user]
    name = Kentaro Kawano
    email = kaisyano@mail.dayo
[includeIf "gitdir:~/projects/src/github.com/"]
    path = .gitconfig.github

$HOME/.gitconfig.github

[user]
    email = kojinno@mailaddress.desu

これでうまくできた。