はじめに
メンバーの評価まわりをする背景から、ふとgitのcommitを人単位で集計したくなったことがありました。
- 誰がどれくらいcommitしているのか
- 対象期間(評価期間)に1番commitしてるのは誰なのか
- このリポジトリに関して1番詳しいのは誰なのか
集計することでこのあたりが知れるようになります。
コマンド
git shortlog -nse
gitに既に用意されていました。
オプション指定なしだとアルファベット順に表示されます。
-n: コミット数多い順
-s: コミット数のみ表示
-e: メアドも表示
期間指定は以下の通りです。
# 直近半年の間でコミットの多い人を調べる
git shortlog -nse --since="6 month ago"
# 2021年でコミット数が多い人を調べる
git shortlog -nse --since="2021-01-01" --until="2021-12-31"
コミット数 人
5000 hoge
4000 foo
3000 bar
マッピング
人によっては異なるメールアドレスでのコミットがありました。
これらを同一人物として扱って集計するために.mailmapを作成しました。
必要に応じて使ってください。
こちらを参考にしました。
https://git-scm.com/docs/gitmailmap
分かりにくかった点としては2つしか横並びで書けないようで3つ以上並べても適用されませんでした。
3つ以上の場合は縦に並べて書くと反映されました。
Joe R. Developer <joe@example.com>
Joe R. Developer <joe@example.com> Joe <bugs@example.com>
Jane Doe <jane@example.com> <jane@laptop.(none)>
Jane Doe <jane@example.com> <jane@desktop.(none)>
Jane Doe <jane@example.com> Jane <bugs@example.com>
別の方法
ちなみに後から知ったんですが、githubを使っている場合はリポジトリの「Insights」タブの「Contributors」から同じような情報を得ることができます。
こちらだとコマンド実行も不要でアクセスするとすぐ見れるのでおすすめです。(こっちの方が楽)
最上部のグラフをドラッグすると範囲指定も可能です。
まとめ
「誰がどれだけ詳しいか?」
「困った時に誰に聞けば良いか?」
みたいな指標にも使えるかと思います。
色んなプロダクトで色んな範囲指定で集計して遊んでみてください!