2015/02/24

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 からごにょごにょする方向になりますね。

ま、とにかく、履歴はうそつかないので上手に分析して、プロジェクトのキャッチアップに役立てられるといいですね!

See Also

サイト内検索