Gitのコミット時メールアドレスをdirenvを使って切り替える

具体的にはメールアドレスをこういう風に使いわけたい

  • GitHubの時にはプライベートの
  • 会社のGitHub Enterpriseの時には会社の

Gitは環境変数GIT_AUTHOR_EMAIL GIT_COMMITTER_EMAILを参照するのでこれをdirenvで変更することで切り替えが出来る。

ghqを使ってリポジトリを管理していると便利で、$GOPATH以下が

├── git.yourcompany.com
│   └── orgA
│       └── repoB
└── github.com
    └── tnmt
        └── repoC

こんな感じになっていると思うので

  • $GOPATH/git.yourcompany.com/.envrc
  • $GOPATH/github.com/.envrc

にそれぞれ

export GIT_AUTHOR_EMAIL=foo@bar.org
export GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL

GIT_AUTHOR_EMAILのアドレスを変えたファイルを設置するとバッチリ?

ちなみにコミット時のユーザ名もGIT_COMMITTER_NAME GIT_AUTHOR_NAMEで制御できる。COMMITTERとAUTHORの差異はよく分からない。