git リポジトリからプロジェクトの概要をつかむ
もうすぐ春ですね。この時季は異動したり転職したりで新しいプロジェクトにジョインする人が多いのではないでしょうか。
さて、そんな新しいプロジェクトにジョインしたとき、プロジェクトの状況を git リポジトリからざっと見てみようというのが今日のテーマです。
よくマージしてる人ランキング
マージしてる人とレビュアーは同じことが多い。つまりコードをよく知る人がこれでわかる(マージも自分でやるプロジェクトだとそうではないだろうけど)。
$ git log --merges --format="%cn" | sort | uniq -c | sort -r | head
コミッタごとのコミット数ランキング
誰がよくコード書いてるかがわかる。もしくは、こいつ他人のコード削除してばっかだなとか。
add/delete 合計コミット
$ git shortlog -sn
コミッタごと add/delete 別(add数順)
$ for AUTHOR in Foo Bar Baz; do git log --author=$AUTHOR --numstat --pretty="%H" | awk 'NF==3 {add+=$1; del+=$2} END {printf("add: %d\tdelete: %d", add, del)}'; echo -e "\\t$AUTHOR"; done | sort -nr -k2
よく編集されているファイルランキング
よく編集されているファイルは重要なファイルな気がしますよね(良くも悪くも)。
$ git log --name-only --pretty="format:" | grep -ve '^$' | sort | uniq -c | sort -r | head
そのファイル、誰がよくコミットしてるかランキング
git shortlog -se
とかでも出せるけど、--format
でコミッタとかメールアドレスとか明示的に取り出せた方が融通が利く。
$ git log --format="%cn" PATH/TO/FILE | sort | uniq -c | sort -r | head
TIPS: 最近のコミットログに絞る
--since
がある。
$ git log --name-only --pretty="format:" --since="3months ago" | grep -ve '^$' | sort | uniq -c | sort -r | head
よく fu*k って書く人ランキング
さいごに、荒ぶるメンバーも見ておこう!
$ git log --pretty="format:%cn:%s" | grep fu.k | cut -d":" -f1 | sort | uniq -c | sort -r
まとめ
git リポジトリの統計は github なんかでビジュアライズされたものが見えるけど、けっこう細かいのは git log
からごにょごにょする方向になりますね。
ま、とにかく、履歴はうそつかないので上手に分析して、プロジェクトのキャッチアップに役立てられるといいですね!