ついに社会人になり、主戦場がmercurialからgitになりました。
gitは今まで脳死でanatofuz@gmail.com
でcommitしていたのですが、娑婆にでると会社のドメインでcommitする必要性が出てきます。
しかし一般的な趣味プロダクトとかで会社のドメインを使うと不要な怒られが発生する可能性がある...!! 会社のプロダクトに関するものだけ会社のドメインを利用したい...!! という感じで、ディレクトリに応じてgitの設定を切り替えるようにしてみます。
リポジトリ管理
ディレクトリごとに設定を切り替える場合はリポジトリをローカルでどうやって管理するかが重要になってきます。 こういうときはghqを使うと良い感じにURLに応じてディレクトリを掘ってくれるので、会社のドメインに応じたディレクトリを勝手に作ってくれます。
今回は github.com/borderShoji
みたいな会社グループのリポジトリをcloneしてきたと仮定して、ghqのルートディレクトリを~/src
とします。
つまりgithub.com/borderShoji/naruto
みたいなリポジトリをcloneしたローカルディレクトリは~/src/github.com/borderShoji/naruto
となります。
~/.gitconfig
の設定
次はgit全体が見る ~/.gitconfig
の設定を書き換えます。
すでにgitconfigにはuserに関する次のような設定が書かれているものとします。
[user] name = AnaTofuZ email = anatofuz@gmail.com username = AnaTofuZ signingkey = XXXXX
この設定がある場合、このマシンで行われる全てのgitのオペレーションはこのuser情報が利用されます。
さて最近のgitはconditional includes機能があり、ディレクトリごとで設定ファイルを独自定義できるようになっています。
ここで、先程のgithub.com/borderShoji
ディレクトリ以下のgitリポジトリに対して設定を独自定義し、デフォルトの設定を上書きするような記述をgitconfigに書いてみます。
[includeIf "gitdir:~/src/github.com/borderShoji/"] path = ~/.gitconfig.bordershoji
ここでのポイントはincludeIf
の末尾に必ず/
をつけるです。/
があるとzshでいうところの**/*
が書かれているのと等価になり、ディレクトリを再起的にたどってくれますが、/
がないとピンポイントでそのディレクトリだけになってしまいます。
あとは~/.gitconfig.bordershoji
に上書きしたいgitの設定を描きます。
[user] email = anatofuz@borderShoji.net signingkey = FFFFFFFFF
こうすると何も考えずにgitの設定がディレクトリごとに代わり、社会性を得ることができます。これで安心!!!!!!