開発を進めていく際に、Git のコミットメッセージ内に「#145」みたいなのを書いておくと、関連する issue がすぐわかるので、なんとなく便利そうな気がしていてちまちま書いています。
GitHub だとリンクをつけてくれるのもなかなか便利です。PR 作って開発をしていたら PR へのリンクは自動で入るんですけどね。個人のプロジェクトだと PR は作らないので、まあそこは手動で妥協しているというわけでもあります。
で、ちまちま手入力するのも結構ダルいんで、自動で入力できるようにしました。幸い会社では、ブランチ名を issues/100-something
とする文化があってそれに合わせて運用してるんで、ブランチ名から自動で取得できます。 .git/hooks/prepare-commit-msg
というファイルを用意すると、コミットメッセージに対してスクリプトを実行できるんで、この機能を使いました。
こんな感じ。
#!/bin/sh
COMMIT_MSG_FILE=$1
COMMIT_SOURCE=$2
SHA1=$3
number=`git branch 2> /dev/null | egrep '^\*' | cut -b 3- | sed -e "s/^issues\/\([0-9]*\).*/[#\1] /g"`
if [[ $number == "[#"* ]]
then
case "$COMMIT_SOURCE,$SHA1" in
,|template,)
/usr/bin/perl -i.bak -pe '
print "'"${number}"'"
if /^\n/ && $first++ == 0' "$COMMIT_MSG_FILE" ;;
*) ;;
esac
fi
git commit
すると、コミットメッセージの頭に [#145]
というのが自動で入ります。便利!!