tig/hubでレビューしやすい環境を作る

コードレビューをするとき、コメントや判断をするには様々な情報が必要です。例えば

  • 変更箇所とそれに対応するcommit message
  • 該当行のblame、その変更が行なわれたpull request
  • 今見ている変数の型、関数の定義元

などです。レビューのコメントを書く場所はGithub/GHEである場合が多いと思いますが、上述した内容と行ったりきたりするのは大変です。これらの起点をtigに置くとスムーズに行ったので、その方法をメモしておきます。

tigはもはや説明するまでもないですが、gitの見やすいcliインターフェイスです。commit logを見たり、diffを分かりやすく表示できます。

レビュー対象になっているPull Requestで行なわれた変更のみをtigで見たいときは、以下のように範囲を絞ります(main view)。

% tig --reverse -w $(git merge-base origin/master HEAD)...HEAD

昔のcommitから見ていきたいので、順番を逆にしています。これでGithubのCommitsのリンクをポチポチ押していかなくてもよくなります(電車の中でも快適に見れてよいですね)。それぞれのcommitでの差分は、enterを押せば見れます(diff view)。diff viewでeを押すと環境変数EDITORで設定しているエディタが開くので、変数の型が気になる場合や関数の定義が気になる場合はエディタを開いて調べるとよいです。自分の場合はvimを開くようにしています。エディタを開いて疑問点を解消してきたらtigに戻ってきて、次のcommitの様子を見て、というのを繰り返し、気になったところはPull Requestのコメントに記入します。

bはgit blameで、どの行を誰が最後に変更したかが分かります。Githubの場合はcommit idが分かれば、対象となったPull Requestも分かります。hubコマンドを使うと、変更を行なったcommit idに対応するGithubのページが開くので、そこから対応するPull Requestのページを開きます。謎の変数や意図が読み取れない変更があった場合、これを使うと解決する...こともあります。tig自体はhubコマンドをサポートしているわけではありませんが、外部コマンドを叩けるので、必要な情報を渡してhubで開けばOKです。~/.tigrcに以下を追記すればBボタンでよしなにGithubのページが開けます。

bind main B !@hub browse -- commit/%(commit)
bind diff B !@hub browse -- commit/%(commit)
bind tree B !@hub browse -- tree/%(commit)/%(directory)
bind blob B !@hub browse -- tree/%(commit)/%(file)

レビュー時には使わないですが、git status(status view)やgit add -pもtigでできるので、最近はtigを使う時間が増えてきました。いい感じにやっていきたいですね。

入門Git

入門Git