Mobile Factory Tech Blog

技術好きな方へ!モバイルファクトリーのエンジニアたちが楽しい技術話をお届けします!

コミットメッセージにブランチ名を自動挿入する

こんにちは、新卒エンジニアの id:kaoru-k_0106 です

何をしたか

私のチームでは、コミットメッセージの先頭にチケット番号を入れるルールがあります。 例えば、PROJECTNAME-123 〇〇の処理を変更しただと、PROJECTNAME-123の部分がチケット番号です。

最初はこれを手動で入力していたのですが、時々入力を忘れることがあり自動挿入しようと思いました。 ちょうど、トピックブランチ名がチケット番号だったので、ブランチ名を使う方針で実装をしました。

導入手順

その1 Gitのコミットテンプレートを設定する

Gitのコミットテンプレートとは、コミットメッセージエディタを開いたときにデフォルトで設定されている文字列です。

この設定は、次のようにテンプレートファイルを作成し、git configで設定できます。

% echo '[branch-name]' > ~/.commit_template
% git config commit.template ~/.commit_template

その2 Git Hooksでコミットテンプレートをブランチ名に置き換える

次に、このコミットテンプレート内の[branch-name]をブランチ名に置き換えるためにGit Hooksを使用します。 具体的には、.git/hooks/prepare-commit-msgを実行権限をつけて置きます。

#!/bin/sh
current_branch=$(git rev-parse --abbrev-ref HEAD)

sed -i "s/\[branch-name\]/$current_branch/" $1
# Macだと以下のようにする
# sed -i "" "s/\[branch-name\]/$current_branch/" $1

これで、ブランチ名が自動で挿入されるようになりました。 実際に挿入されるか確かめてみます。

動作確認

git commitを叩くと、[branch-name]がブランチに置き換わった状態でコミットメッセージエディタが開きます。

ちなみに、Visual Studio Code (VSCode)のソース管理機能でコミットした場合もブランチ名に置き換わります。 入力欄ではテンプレートの[branch-name]がそのまま表示されていますが、コミットするとブランチ名に置き換わります。

おわりに

これだけでコミット時にブランチ名を自動挿入することができました。 ミスを減らすことができ、チームの開発効率にも貢献できると思います!