任意のコミットを無視して git blame してくれるやつ。いわゆるメガコ
ミットを無視した blame をしたいときに使える。
なぜかセットアップにひどくハマったのでメモ。
セットアップ方法
- git clone してくる
$ git clone https://github.com/google/proto-quic.git
- 以下のように、パスの通ったディレクトリに git-hyper-blame という
名前のシンボリックリンクを作る。git のサブコマンド hyper-blame が
利用可能になる
$ ln -s ~/src/github.com/google/proto-quic/depot_tools/git_hyper_blame.py ~/bin/git-hyper-blame
※ Python は macOS Sierra 付属の /usr/bin/python (Python 2.7.10) で
動きます。pip install とかも不要です。
使い方
普通の blame はこちら。
$ git blame Gemfile
99d5ce00 (Takashi Masuda 2016-08-26 23:06:50 +0900 1) # frozen_string_literal: true
99d5ce00 (Takashi Masuda 2016-08-26 23:06:50 +0900 2)
^1039771 (Takashi Masuda 2016-07-16 13:28:00 +0900 3) source 'https://rubygems.org'
^1039771 (Takashi Masuda 2016-07-16 13:28:00 +0900 4)
d1213a45 (Takashi Masuda 2016-12-31 13:50:21 +0900 5) ruby '2.4.0'
^1039771 (Takashi Masuda 2016-07-16 13:28:00 +0900 6)
hyper-blame で d1213a45 を除外してみる。5 行目が変わった。
$ git hyper-blame -i d1213a45 Gemfile
99d5ce00 (Takashi Masuda 2016-08-26 23:06:50 +0900 1) # frozen_string_literal: true
99d5ce00 (Takashi Masuda 2016-08-26 23:06:50 +0900 2)
1039771a (Takashi Masuda 2016-07-16 13:28:00 +0900 3) source 'https://rubygems.org'
1039771a (Takashi Masuda 2016-07-16 13:28:00 +0900 4)
3f3219d1 (Takashi Masuda 2016-11-23 18:50:22 +0900 5*) ruby '2.4.0'
1039771a (Takashi Masuda 2016-07-16 13:28:00 +0900 6)
.git-blame-ignore-revs というファイルに、除外したい commit を列挙
しても同じ効果が得られる。
$ echo d1213a45 > .git-blame-ignore-revs
$ git hyper-blame Gemfile
99d5ce00 (Takashi Masuda 2016-08-26 23:06:50 +0900 1) # frozen_string_literal: true
99d5ce00 (Takashi Masuda 2016-08-26 23:06:50 +0900 2)
1039771a (Takashi Masuda 2016-07-16 13:28:00 +0900 3) source 'https://rubygems.org'
1039771a (Takashi Masuda 2016-07-16 13:28:00 +0900 4)
3f3219d1 (Takashi Masuda 2016-11-23 18:50:22 +0900 5*) ruby '2.4.0'
1039771a (Takashi Masuda 2016-07-16 13:28:00 +0900 6)
See also git-hyper-blame(1)