コミットメッセージをとことんよくしよう
はい、どうもこんにちは。趣味でプログラミングやってるあかつきゆいとです。
ところでですね、最近、デジタルサークルと題して、UniProjectというサークルを立ち上げました。
そこで、コミットメッセージをみんな統一していい感じにしたいという野望が生まれまして...
今回の話に至りました。
いいコミットメッセージとは
これを参考に、
プレフィクス(絵文字) 概要
本文
ってする感じで。
メッセージテンプレ
これを参考にさせていただき、ちょっと使いそうなものや使わなさそうなプレフィクスを改変して、こんな感じに。
# ==== Format ====
# ${prefix}: 実装の概要を50文字以下で記述
# ex)fix:ユーザー情報にnameが足りないのでnameを追加
#
# コミット本文(50文字で収まらない場合はこちらに)...
#一行目の上に#をつけずに入力してください。
# ==== Prefix ====
# feat 新規機能、新規ファイル追加
# delete ファイル削除
# fix バグ修正
# style 空白、セミコロン、行、コーディングフォーマットなどの修正
# refactor リファクタリング
# uppkg 依存関係のアップグレード
# chore ビルド、補助ツール、ライブラリ関連、開発環境変更、更新等
# docs ドキュメントのみ修正
# tag タグの作成
# typo タイポ
# ==== Rules ====
# 1. コミット本文を記述する場合は、概要とコミット本文の間に空行1行あける
# 2. 概要は50文字以下で記述する
# 3. 概要の末尾はピリオドで終わらない
# 4. 概要は命令法で記述する
# 5. 本文は72文字で改行する
# 6. 本文ではhowではなくwhatとwhyを記述する
あとは、
git config git config commit.template /path/to/.gitmessage
をぶっ叩くだけ。
git hooks
でも、わざわざ絵文字入力はめんどくさい。
というか、テンプレに絵文字を書かなかったのは、これを後で思いついたからです。
なんかgit hooksなるものがあるらしく、それを使いました。
で、これ、ほんとはgitフォルダの中のhooksとやらに入れとかなきゃいかんらしい。
でも、リポ内に含まれないので設定ガチャガチャw
#!/bin/bash
COMMIT_MSG=$1
prefix=$(head -n 1 $COMMIT_MSG | awk '{ print $1 }')
emoji=""
case $prefix in
"fix:")
emoji=":bug:"
;;
"feat:")
emoji=":sparkles:"
;;
"hammer:")
emoji=":hammer:"
;;
"delete:")
emoji=":zap:"
;;
"uppkg:")
emoji=":arrow_up:"
;;
"docs:")
emoji=":memo:"
;;
"style:")
emoji=":art:"
;;
"refactor:")
emoji=":recycle:"
;;
"chore:")
emoji=":hammer:"
;;
"tag:")
emoji=":bookmark:"
;;
"typo:")
emoji=":pencil2:"
;;
*)
echo "The specified prefix is undefined.";
exit 1
;;
esac
sed -i "s/$prefix/$emoji/" $COMMIT_MSG
echo $prefix
exit 0
これで、
git config --local core.hooksPath .githooks
うん、よし。
ちなみに、gitmojiはもう入ってる前提です。
これを汎用化しようぜ
汎用化という言葉があっているかは知りませんが、だれでも簡単にできるようにしてみました。
流れとしては
githooks、テンプレコピー
↓
共同制作者用のスクリプト設置
↓
git周りの設定
を自動でやってくれるスクリプトです。
ここでは割愛させていただきます。パス通ってるところに置くと、
git ファイル名
で動きます。共同制作者さんは、colab_script.sh
を実行するだけでせっとぃがすべて完了するという優れもの。
最後に
コミットメッセージって効率化すると見やすくて便利(当たり前)
リポはこちら↓
実装めんどくさい人はこれのREADMEどおりに設定すれば動きます。