手元で直した修正がgithubのissueに上がっている事をうっかり忘れて、コミットログに参照を書かずコミットしてしまうことがよくありましたが、ブランチにissue番号を予め入れておくというこの記事のアイデアのおかげでミスはほぼなくなりました。
導入にあたって、git-flow
の作るブランチに対応できるように修正を加えました。
.git/hooks/prepare-commit-msg
#!/bin/sh
if [ "$2" == "" ] ; then
mv $1 $1.tmp
echo "refs #`git branch | grep "*" | awk '{print $2}' | sed -e 's/.*([1-9][0-9]*).*/\1/'`" > $1
cat $1.tmp >> $1
fi
元記事では、23_issue_name
のようにブランチの先頭にissue番号を入れるようになっていましたが単に数字を持ってくるようにしています。
ところが、コミットログのテンプレートとこのままでは併用ができません。
そこで、以下のようにテンプレートの{issue}
を置き換える形に変更しました。
.git/hooks/prepare-commit-msg
#!/bin/sh
issue=$(git branch | grep "*" | awk '{print $2}' | sed -E 's/.*\/([1-9][0-9]*).*/\1/')
# commit template の {issue}をブランチから抽出した番号に置換する
perl -i.bak -ne "s/{issue}/$issue/; print" "$1"
テンプレートには以下のように書いておきます。
gitmessage.txt
# Explain why this change is being made
# Provide links to any relevant tickets, articles or other resources
refs #{issue}
Issue番号の参照付きのコミットメッセージをより楽に作成することができるようになりました。