# git リポジトリからプロジェクトの概要をつかむ {{tag: git, development}} もうすぐ春ですね。この時季は異動したり転職したりで新しいプロジェクトにジョインする人が多いのではないでしょうか。 さて、そんな新しいプロジェクトにジョインしたとき、プロジェクトの状況を 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 * [[http://git-scm.com/book/ja/v1/Git-%E3%81%AE%E5%9F%BA%E6%9C%AC-%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E5%B1%A5%E6%AD%B4%E3%81%AE%E9%96%B2%E8%A6%A7 2.3 Git の基本 - コミット履歴の閲覧]] * [[http://koyamay.hatenablog.com/entry/2014/10/06/022654 gitでnumstatを利用して総追加行数、総削除行数を取得するワンライナー]]