LoginSignup
8
8

More than 5 years have passed since last update.

windows版 SourceTreeのコミットログに自動でブランチ名とかチケット番号を入れる方法

Last updated at Posted at 2013-03-27

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行にみえて色々はかどります。

8
8
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
8
8