branch名に、チケット番号仕込むと、良い事あった。
を参考にさせてもらいました。
コミットログにチケット番号が書いてあるとGUIでみた時とか検索とか便利だよね。
(たとえチケット管理システムと連携してなかったとしても!)
でも正直自分で毎回いれるのめんどくさい・・・。
ということで、
ブランチ名-チケット番号
のブランチからコミットすると自動でログが挿入されるようなhookを書きました。
ブランチ名が先なのは、コマンドラインから操作したくなったときにタブ補完が効かせやすそうだったからで深い意味はありません。
ブランチ名をコミットメッセージの最後に追加してるのは、SourceTreeの blameからlogを見た時にhistoryタブを見なくても良くなりそうだったので、ないよりはいいだろうということで入れておきました。
pre-commit-msg
でやろうとしたんですが、GUIでcommitを押したタイミングでSourceTreeからcommitが走ってて、pre-commit-msgだといいタイミングで実行できないのでcommit-msg
でやりました。
--amend
のときに気をつければ問題ない・・・はず。
.git/hooks/commit-msg
#!/bin/sh
#ブランチ名を取得 もっといい方法あるかも。
Branch="$(git branch | grep "*" | awk '{print $2}')"
if [ $Branch == "master" ] ; then
#masterでのコミットは別ルールにしたかったのでとりあえず分けてみた
ReqestNo=""
CommitBranch="master"
else
#正規表現でブランチ名からとチケット番号と、コミット番号抜きのブランチ名を取得
ReqestNo="$(echo $Branch | sed -e "s/^.*-\([0-9]\+\)$/\1/g")"
CommitBranch="$(echo $Branch | sed -e "s/^\(.*\)-[0-9]\+$/\1/g")"
fi
#コミットメッセージの最初にチケット番号を、最後にコミット番号抜きのブランチ名を追加
mv $1 $1.tmpbycommit-msg
echo -n "[#$ReqestNo] " > $1
cat $1.tmpbycommit-msg >> $1
echo "*$CommitBranch" >> $1
このスクリプトをログを自動挿入したいリポジトリのhooksにおいてやればOKです。
hotfix-9999
のブランチでほっととっとバグだぜー
というメッセージでコミットすると、
[#9999] ほっととっとバグだぜー
*hotfix
というログになります。
SourceTree上のhistoryタブからは
[#9999] ほっととっとバグだぜー *hotfix
という感じで1行にみえて色々はかどります。