GitHub と GHE を使用していて、user.name, user.email の設定を忘れたりすると、デフォルトユーザーが使用された結果、コミットに異なるユーザー作業が混じってしまうことがある。

そういうのを防ぐ一例。

前提

  • GitHub用のローカルリポジトリは、~/src/github.com/ 配下で管理しているとする。
  • GHE用のローカルリポジトリは、~/src/git.example.com/ 配下で管理しているとする。
  • GitHubのアカウントとメールアドレスは、github_user_name, github_user_email とする
  • GHEのアカウントとメールアドレスは、ghe_user_name, ghe_user_email とする

対応

  • mkdir -p ~/.git-template/hooks
  • cd ~/.git-template/hooks
  • cp /share/git-core/templates/hooks/* .
  • vim post-checkout
    #! /bin/bash
    if [ `echo $PWD | grep github.com` ]; then
      git config user.name github_user_name
      git config user.email github_user_email
    elif [ `echo $PWD | grep git.example.com` ]; then
      git config user.name ghe_user_name
      git config user.email ghe_user_email
    fi
  • git config –global init.templatedir ‘~/.git-template’

こうすることで、git clone した際に自動的にユーザー設定がされて気にする必要がなくなる。

みんながこんなことをしているとは思えないので、もっと良い方法がありそうですね。