【小ネタ】コミットメッセージから Pull Request のコメントを生成してコミットメッセージを書くモチベーションを上げよう!
こんにちは!アルダグラムでエンジニアをしている @sukechannnn です。
git、GitHub を使って開発する際に、コミットメッセージに変更の意図や背景をちゃんと残すのはとても大切なことです。
コミットメッセージがあれば、開発した時の背景を未来の人(自分含む)に伝えることができます。git blame とても便利ですね。
それと同時に、プルリクエストを作る際に書くコメントも大切です。アルダグラムでは、テンプレート機能を使って、プルリク作成時に書いて欲しいコメントの雛形を作るようにしています。
## 関連チケット
https://github.com/aldagram/kanna/issues/{number}
## 概要
このPRで変更したことの概要を書いてください。
## 動作確認方法
どのような動作確認が必要か書いてください。
## 気になっているところ/補足
自信のないところや特にレビューしてほしいところ、その他補足したいことがあれば記載してください。
そしてある時気づきました。
プルリクエストのコメントに書いている内容とコミットメッセージに書いてある内容がほとんど同じであることに。
多くの開発現場では、チケットの管理を GitHub issue や Jira で管理しているのではないでしょうか?その場合、基本的に背景などはそちらに書かれているため、プルリクエストにはそのリンクを貼れば事が足りることが多いです。
そのため、プルリクエストのコメントには、具体的なコード変更の背景や目的について書いてあればOKです。つまり、コミットメッセージをしっかり書けば、それがそのままプルリクコメントになってしまうのです...!
ということで、コミットメッセージからプルリクエストのコメントを生成するコマンドを作ってみました。
$ git log --reverse --pretty=format:"- %C(reset)%h%C(reset) %s%C(auto)%n%w(0,2,2)%b%-"
内容を簡単に解説すると、
- --reverse オプションで古い順に表示
- --pretty=format: オプションで表示時のフォーマットを指定
-
- %C(reset)%h%C(reset) %s%C(auto)
はコミットハッシュとコメント1行目がハイフンで始まる -
%n%w(0,2,2)%b%-
は3行目以降のコメントは1行目から改行し、インデントを2つ入れる
-
という感じです。僕は3行目以降のコメントはハイフンを付けて書いてるのでこんな感じですが、適宜カスタマイズしてください。
これを .zshrc に alias として追加して、実行しやすくしてます(git log messages => glm)。
alias glm='git log --reverse --pretty=format:"- %C(reset)%h%C(reset) %s%C(auto)%n%w(0,2,2)%b%-"'
こうすることで、コミットログを以下のように積み上げた時に、
$ git commit --message ':sparkles: Implement HOGE to achieve something
- hogehoge
- fugafuga
'
$ git commit --message ':bug: Fix bug piyopiyo
- This bug caused by something
'
以下のような標準出力を得ることができます。
$ glm -2
- 25a5370 :sparkles: Implement HOGE to achieve something
- hogehoge
- fugafuga
- 210df94 :bug: Fix bug piyopiyo
- This bug caused by something
Mac であれば pbcopy が使えるので、$ glm -2 | pbcopy
でクリップボードにコピーできます。
あとはそれをプルリクコメントに貼り付けるだけです。
コミットメッセージをしっかり書けば自然とプルリクエストのコメントになるので、コミットメッセージを書く動機にもなります。コミットメッセージは大事です(2回目)。
ということで、これを活用して、今までコミットメッセージをあまり書いてなかった人もこれを期に書いてみてはいかがでしょうか!
株式会社アルダグラムのTech Blogです。 世界中のノンデスクワーク業界における現場の生産性アップを実現する現場DXサービス「KANNA」を開発しています。 採用情報はこちら: herp.careers/v1/aldagram0508/
Discussion
大変参考になりました。僕のほうではこんな感じで利用してます(引数渡して表示の行数を指定できるようにした)。
あ。
glm -2
でできるのを見落としてました。それにしても大変便利ですね。情報ありがとうございます。