0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コミットメッセージをとことんよくするツールを作ってみた件

Last updated at Posted at 2024-01-22

コミットメッセージをとことんよくしよう

はい、どうもこんにちは。趣味でプログラミングやってるあかつきゆいとです。

ところでですね、最近、デジタルサークルと題して、UniProjectというサークルを立ち上げました。

そこで、コミットメッセージをみんな統一していい感じにしたいという野望が生まれまして...

今回の話に至りました。

いいコミットメッセージとは

これを参考に、

プレフィクス(絵文字) 概要
本文

ってする感じで。

メッセージテンプレ

これを参考にさせていただき、ちょっと使いそうなものや使わなさそうなプレフィクスを改変して、こんな感じに。

.gitmessage
# ==== 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

.githooks/commit-msg
#!/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どおりに設定すれば動きます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?