国境の南

Ruby, Railsメイン

コミットログのAuthorとかCommitにまずい情報が入ったら

前のエントリが上司の目に触れて指摘されたのだけど
一番最初のエントリで紹介しているChrome拡張のcommit logに含まれるAuthorとCommitが会社のメールアドレスだった。

そもそも、自分のコンソールではg logとやると

Mon May 18 19:31:22 2015 +0900 089772a (HEAD, origin/user-topics, user-topics) Add topics index show  [fkagami]
Mon May 18 15:24:35 2015 +0900 fae405a (origin/signin-out, signin-out, master) Make current user  [fkagami]
Sat May 16 16:21:27 2015 +0900 5f39bb4 (origin/master) Merge pull request #7 from fumiyasu-kagami/signup  [fkagami]

みたいな表示となるように設定してあったので、コミットログにメールアドレスが含まれるものだということも知らなかった(忘れていた)

g log --pretty=full

と打つと、下のような表示になる

commit 24d729e39564a482aa8d7c769162983412b2b989
Author: <ユーザー名> <登録メアド>
Commit: <ユーザー> <登録メアド>

    Bump gems

commit 7fffd96ee3ee78013d181380c9c395b54cddc4bd
Author: <ユーザー名> <登録メアド>
Commit: <ユーザー名> <登録メアド>

    Add example

ここの登録メアドの部分にバッチリ社名が刻まれていて
拡張の内容が内容なだけに焦った。

調べたところ、以下のようなコマンドで一括してコミットログのユーザー情報を変更できるらしい

git filter-branch -f --env-filter "GIT_AUTHOR_NAME='<登録したい名前>'; GIT_AUTHOR_EMAIL='<登録したいメアド>'; GIT_COMMITTER_NAME='<登録したい名前>'; GIT_COMMITTER_EMAIL='<登録したいメアド>';" HEAD

または、事前にディレクトリの.git/configで登録アドレスを設定しておくことも出来る。 configにはglobalとリポジトリ単位のlocalがあるので、globalを個人メアドにして、仕事用のリポジトリはlocalで社用アドレスに変更しておくみたいなやり方にするのが一番安全かもしれない

しかし、本格的に推測されないようにするためには個人githubに上がっている全てのリポジトリとコミットログに関して過去を改ざんする必要があってかなり面倒 (そもそも社用PCで個人開発をするべきでない or インモラルなツールを公開するべきでない)