社用Gitサーバでは社用のメールをつかう.gitconfig 〜社内ドメインを外に漏らさない編〜


1 min read
社用Gitサーバでは社用のメールをつかう.gitconfig 〜社内ドメインを外に漏らさない編〜

GitHubのコミットログ、コミットした人のアイコンが出ていてとてもわかりやすいですよね。
コミットとアカウントの紐付けにはどうやら、コミットに紐付けられたメールアドレスが使用されているようです。そうなると、コミットに紐付ける(git config user.email=...とかやるアレです)メールアドレスはアカウントに登録してあるメールアドレスにしたいものです。

しかし、会社ではGitHub Enterprise(GHE)、私用ではgithub.comを使用している、と言った場合はどうでしょうか。コミットに紐付けたいメールアドレスがリポジトリによって変わる、ということになってしまいます。

調べてみると、そういった場合、次の様に.gitconfigIncludeIfのブロックを設定することでうまく回避ができそうということがわかり、しばらく設定していました

[IncludeIf "gitdir:~/src/GHE_DOMAIN"]
path = "~/.gitconfig.ghe"

~.gitconfig.gheには次の様に書かれています。

[user]
email = 社用メールアドレス

私は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の変更をする必要も無く安心です。


hubコマンドにGitHub Enterprise環境を追加する
Previous article

hubコマンドにGitHub Enterprise環境を追加する

hubコマンドをご存じでしょうか。インストールしてalias git=hubと設定するだけで、gitコマンドからGitHubの操作ができるようになる優れものです。特に個人的にはgit createとするだけでGitHub上にリポジトリが作成される、というのが非常に便利だと思っています。 さて、皆さんの会社ではgitサーバはどのように構築されているでしょうか。いろいろな選択肢がありますが、それなりの規模だとGitHub Enterprise(以下GHE)を利用している、という会社も多いと思います。 実際、現職ではGHEを使っています。 そのような場合、趣味/個人の開発ではgithub.com、会社ではGHEと使い分けることとなりますが、GHEでhubが使えないとすると非常に不便です。そう考えて調べてみると、

技術書典7でGo言語の本を頒布します
Next article

技術書典7でGo言語の本を頒布します

今週末はいよいよ技術書典7ですね! 今回はGo言語の標準パッケージの解説本を頒布予定です。 web-apps.tech: サークル詳細ページ 当初の予定では全パッケージを詳解!みたいな予定だったんですが、ページ数が増えまくった結果、残念ながら26個しか詳解できませんでした。 108ページで一冊1,000円、電子版もあるよ、の予定です(電子版と両方での割引をどうしようか今考えてます)。 サークルスペースは「か11C」です。


GO TOP

🎉 You've successfully subscribed to something tech.!
OK