Gitでコミットした際に、自動で先頭にチケット番号を付与する
プロジェクトで開発していくにあたって、gitを使うとコミットメッセージの先頭にチケット番号を付与することが多い。
そのため、毎回チケット番号を付与するのは面倒なので、自動で付与されるようにしてみた。
今回はブランチ名をfeature/チケット番号として切った場合を想定したもので構築していますが、
この辺はどんな形にでも簡単に変えれるので適時お願いします。
1. 作業するプロジェクトの直下ディレクトリに移動してprepare-commit-msgを作成する
$ vi .git/hooks/prepare-commit-msg
下記を記載(hookではrubyやpythonやswiftなどで記載できる)
#!/usr/bin/env ruby
# 現在のブランチ名を取得
current_branch = `git branch | grep '*'`.chomp.sub('* ', '')
# feature以降のブランチ名を取得
branch_name = current_branch.match(/feature\//)
# featureがブランチ名についていない場合は何も付与しない
branch_name = branch_name.post_match + ": " unless branch_name.nil?
puts branch_name
# コミットメッセージファイルの中身を取得
# -mオプション で指定しているメッセージや、-mを指定しなかった際のエディタで入力したメッセージが入っている
commit_msgs = File.readlines(ARGV[0])
# 引数に設定されたコメントを末尾に付与
open(ARGV[0], 'w') {|file|
file.print "#{branch_name}"
file.puts commit_msgs
}
2. 実行権限を与える
chmod +x .git/hooks/prepare-commit-msg
これでgit commit -m ‘メッセージ’ や git commitで開いたエディターでメッセージを入れた際に自動で先頭にチケット番号が付与されるようになる。
全てのプロジェクトで適応させたい場合は、
git config –global init.templatedir ~/.git_template/
これで新たにgitレポジトリを作ったりcloneすると.git_templateディレクトリの設定が有効になる。
~/.git_template/hooks/prepare-commit-msgが呼ばれる