GitHubのコミットログ、コミットした人のアイコンが出ていてとてもわかりやすいですよね。
コミットとアカウントの紐付けにはどうやら、コミットに紐付けられたメールアドレスが使用されているようです。そうなると、コミットに紐付ける(git config user.email=...
とかやるアレです)メールアドレスはアカウントに登録してあるメールアドレスにしたいものです。
しかし、会社ではGitHub Enterprise(GHE)、私用ではgithub.com を使用している、と言った場合はどうでしょうか。コミットに紐付けたいメールアドレスがリポジトリによって変わる、ということになってしまいます。
調べてみると、そういった場合、次の様に.gitconfig
にIncludeIf
のブロックを設定することでうまく回避ができそうということがわかり、しばらく設定していました
|
|
~.gitconfig.ghe
には次の様に書かれています。
|
|
私はGo言語をよく書くのと、ghq
を使っている都合上、gitのリポジトリを配置するパスが$(GOPATH)/src/GIT_DOMAIN/USERNAME/REPOSITORY
という形式になっているため、リモートリポジトリのドメインを指定することでうまいこと社用GHEの時だけ設定を上書きすることができていたのでした。
そしてこれは、どのPCでも使用できるように、dotfilesリポジトリ としてgithub.com にpushしていました。
その結果、会社の人から、「社内のサービスのURL(この場合はGHEのURL)はセキュリティ的な理由から外に出さないようにしてほしい」と連絡を受けました。すぐさま該当のブロックは消したのですが、そうするとメールの設定が自動でされなくなってしまい不便です。リポジトリのパスを変更するというのも、せっかくの統一的な操作に違いが出てしまい、不便です。
そこで思いついたのが、こういったセンシティブな情報を別のプライベートリポジトリに分け、Makefile でインストールを自動化するという方法です。
パブリックなdotfilesリポジトリ
にある.gitconfig
には次の様に書いてあります。
[include]
path = ~/.gitconfig.secret
.gitconfig.secret
はその名の通り、秘匿情報を含んだ.gitconfig
で、プライベート化されたdotfiles-secretリポジトリにおいてあります。dotfiles-secretリポジトリはmake install
としたときにgit clone
され、さらにそのディレクトリ内のMakefile
により配置されます。dotfiles-secret/.gitconfig.secret
には先ほどのIncludeIf
ブロックが書かれており、同リポジトリ内の.gitconfig.secret.ghe
(名前を少し変えました)を読み込みます。
これで、全体の使い勝手をほとんど損なうことなくどのマシンでも(dotfilesが配備済みなら)同様に設定することができました。
Makefile
は特にdotfilesのリストを持たないよう記述しているため、新しいdotfileが増えても、特にMakefile
の変更をする必要も無く安心です。