BlogKLabは、多くのスマートフォン向けゲームを開発・提供しています。スマートフォン向けゲームの開発と運用は、Webソーシャルゲームと比べて格段に複雑で、またコンシューマゲーム開発とも異なったノウハウが求められる領域もあります。このブログでは、KLabのゲーム開発・運用の中で培われた様々な技術や挑戦とそのノウハウについて、広く紹介していきます。読者の皆さまが普段使っているバージョン管理システムは何でしょうか?多くの会社さんと同様、KLabでは大多数のプロジェクトでGitを利用しています。Gitでは全てのcommitについて名前とメールアドレスが記録されます。Enterpriseを利用している一方、一部プロジェクトや公開用のリポジトリについてはgithub.comも併用しており、それぞれで登録メールアドレスが異なっていたりするため、間違いが起こりやすい状況になっています。本稿では、そんなときでもリポジトリごとに適切なメールアドレスでcommitできるような~/.gitconfigの書き方を紹介します。--localで設定するようにした、というものです。その際の設定値をスクリプト側に書かず、~/.gitconfigに書けるようにしました。手順としては、まず~/.gitconfigを次のように変更または追記します。<URL>]ブロックに書くメールアドレスはリポジトリのURLに対応するメールアドレスです。次に、この設定通りにGitのローカル設定を変更するためのフックスクリプトを設置します。次のように~/.git_templates/hooks/post-checkoutを作成します。cloneのタイミングでuser.nameとuser.emailが必要に応じて設定されるというわけです。addしたような場合には対応できないので、注意が必要です。URLごとの設定が書けるスクリプトだけ紹介しても寂しいので、仕組みも紹介します。1.8.5からはリポジトリURLごとの設定が書けるようになりました。pageには次のような例が掲載されています。/tmp/cookie.txtこれはリポジトリのホスト名によってhttp.sslVerifyを勝手に切り替えるような例です。設定値によっては、このように書くだけで勝手に設定を使い分けることができます。一方で、user.emailなどの設定はURLに紐付いているわけではないため、~/.gitconfigを設定しただけでは反映されません。cloneのフックスクリプトから利用したというわけです。この仕組みを使えば、特定オーガナイゼーションのみ、もしくは特定リポジトリのみといった設定も可能ですので、他にも応用ができそうですよね。