リポジトリごとに user.name と user.email を変更する

会社で Github Enterprise を使っているので、github.com の方の user.nameuser.email でコミットしてしまわないようにリポジトリごとに設定を変更できるようにした。

gitconfig にあった user.nameuser.email をけして、useConfigOnlytrue にした。 こうすることで、リポジトリごとに user.nameuser.email を設定しないと *** Please tell me who you are. などといわれてコミットに失敗するようになり、誤ったユーザでのコミットを防げる。 変更前

[user]
    name = ganmacs
    email = ganmacs@gmail.com

変更後

[user]
    useConfigOnly = true

あとは、シェルに以下のような関数を定義しておけば良さそう。

function company() {
    git config user.name "namae"
    echo "Set user.name as $(git config --get user.name)"
    git config user.email "foo@bar.com"
    echo "Set user.email as $(git config --get user.email)"
}

function private() {
    git config user.name "ganmacs"
    echo "Set user.name as $(git config --get user.name)"
    git config user.email "ganmacs@gmail.com"
    echo "Set user.email as $(git config --get user.email)"
}

その他

pre-commit hook などでディレクトリごとに自動で設定する方法も考えたが、大げさだなと思ってこの方法に落ち着けた。 もっといい方法があれば教えて欲しい。