仕事でGitのコミットメッセージをちゃんと書けているか?ゲーム

仕事のコミットメッセージは雑になっていることが多い。

それを解決する方法を考えていたらふと思いついたので、ブログに書いておく。

基本ルール

  1. 後述するコマンドでGitのコミットを 5つ 取得する
  2. git show コマンドでコミットのログとdiffを表示する
  3. そのまま変更内容を説明できれば 5点
    • 少なくとも「なぜ必要だったのか?」と「その変更は現在も必要か?」くらいは説明して欲しい
  4. コミットメッセージから外部URLを開くと -1点
    • リンク先で外部URLを開くと 更に-1点
  5. コミットに関連するプルリクの概要、コミット一覧を閲覧したら -2点
  6. コミットの author に質問する場合 -3点
  7. コミットの author が退職者でもう聞けない場合 -5点
  8. 5つのコミットで点数を計算し、足した値が合計点

バグ対応で関係あるコミットを見つけたとき、そのコミットの意図を調べる時間が短いほど高得点...みたいな意図で点数を配分してます。

普通の遊び方

以下のように自分のユーザー名を author で指定しつつ、3ヶ月前のコミットをランダムで5つ選ぶ。

$ git log --author=sinsoku \
  --since="4 months ago" --until="3 months ago" \
  --no-merges --oneline | sort --random-sort | head -n 5

「3ヶ月前の自分は他人」という言葉もあるけど、自分のコミットは説明できるかどうか?

定期的に合計点を計測しておけば、自分のコミットメッセージの改善を定量的に測れるかも。

チームで遊ぶ

authorを指定しないことでリポジトリにコミットしていた人の全員を対象にできます。
(コミット数は5よりもメンバー数にして、1人1コミットを説明する方が良さそう)

$ git log \
  --since="4 months ago" --until="3 months ago" \
  --no-merges --oneline | sort --random-sort | head -n 5

文字通り「他人の書いたコミット」を git show で表示し、その人の前で説明するのは面白いと思う。

ただ、"レビュー指摘修正" みたいな雑コミットが当たると気まずくなる可能性はある。

チーム対抗戦

2つのリポジトリ(2つのチーム)で合計点を競う。

  • コミットの説明を他チームに対して行う
  • 他チームの人が別チームのコミットの説明をする

などチームのメンバーを混ぜると面白いと思う。

これ読んで「他チームの仕様を説明できる必要があるのか?」と思う人がいると思うけど、いきなり別チームに異動することはある。
人事異動はいつだって突然降ってくる。

まとめ

深夜に思いついたネタを適当に書いた。

仕事のリポジトリで試してみたい。