Anonymize Git History
Gitのコミットの匿名化
自分の作品を閲覧できる形で保存しておく必要は、もしかしたらあるかも知れない。 私にとってはそれがGitリポジトリだった。
42でチームでwebアプリの開発をしていたのだが、その時の取り決めでリポジトリはprivateにするということで合意した。 無事開発は終了することができたが、自分の開発経験として他にWebアプリを作ったことはなく、開発経験の見える化をしたかった。
trascenは環境変数経由でOAuthの鍵を渡すなどしないと動かないようになっており、結局のところスクリーンショットや動画で動作を可視化する必要がある。 しかし、とりあえずソースコードの公開だけでもしておきたかったので、自分以外の名前を匿名化することにした。
コミットの編集
gitの情報は全て.git
に保管されている。これをダイレクトに編集する能力は私にはないので、filter-branch
(docs)という方法をとる。
git filter-branch -f --msg-filter '
sed -e "s/Merge pull request #\([0-9]*\) from [^/]*\//Merge pull request (anonymized)/" \
-e "s/Merge branch \([^ ]*\) into \([^ ]*\)/Merge branch (anonymized)/" \
-e "s/Merge branch \([^ ]*\) of \([^ ]*\) into \([^ ]*\)/Merge branch (anonymized)/"
' -- --all
sedコマンドを使い、特定のパターンにマッチするメッセージを置換する。
そして、git log --pretty=format:"%B" | grep
や目視で確認。
どうやら無事匿名化されたようだ。
コミットメッセージ以外には情報は残っていないはずなので、新しいリポジトリを用意して、そこにpushする。
チームメンバの了解が取れれば、無事公開できる。→repo