Help us understand the problem. What is going on with this article?

Git の commit-msg hook でコミットメッセージにチケット番号が含まれるかチェックする

More than 5 years have passed since last update.

Git の commit-msg hook でコミットメッセージにチケット番号が含まれるかチェックする

概要

ここ最近のBTSのチケットとバージョン管理ツールは

コミットコメントによる連携機能が標準で搭載されているものが多いです。

しかしコミット時にチケット番号を記述し忘れて連携できず・・・などと言うことがあると思います。

git は履歴の改ざんができるので後から修正することもできますが、少し手間がかかります。

そこで、フックを利用してチケット番号を含んでいないコミットを拒否するようにします。

commit-msg フック

commit-msg入力後に処理を挿入できます。

下記ファイルに処理を記述します。

./.git/hooks/commit-msg

記述する言語は好みで。

私はRubyが好きなのでRubyで書きました。

commit-msg コード

Rubyで書きました。

BTSが要求するチケット番号は シャープと数字の書式だとします。

例えば「#9」や「#25」。

.git\hooks\commit-msg

#!/usr/bin/env ruby
message = File.read(ARGV[0])

$regex = /#\d+/

if !$regex.match(message)
  puts "[POLICY] No Ticket No Commit!!"
  exit 1
end

チケット番号なしでコミット

$ git commit -m 'no ticket No'
[POLICY] No Ticket No Commit!!
$ echo $?
1
# コミットがキャンセルされたことを確認
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   hoge.txt
#

チケット番号ありでコミット

$ git commit -m '#23 fix hoge.txt'
[master 2b98dfa] #23 fix hoge.txt
 1 files changed, 1 insertions(+), 0 deletions(-)
$ echo $?
0
# コミットされたことを確認
$ git status
# On branch master
nothing to commit (working directory clean)

備考

フックを利用してこんなことをすると良いかも

  • README.mdなどドキュメントしか変更していない場合はコミットコメントを改ざんして [ci skip] を付与し、
    Travis CIをスキップする
  • コミットコメントが1行目に見出し、2行目に空行、3行目以降に詳細、のフォーマットになっているかチェックする
tbpgr
主にRubyを扱う Recruiting Operations 。 tbpgr の読み方は(てぃーびー) 個人ブログでも色々と情報を垂れ流してます。 http://tbpgr.hatenablog.com/
http://tbpgr.hatenablog.com/
studist
「伝えることを、もっと簡単に」をミッションにビジュアルSOPマネジメントプラットフォームのBtoB SaaS「Teachme Biz」を開発・運営するスタートアップ
https://medium.com/studist-dev
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした