アクトインディ開発者ブログ

子供とお出かけ情報「いこーよ」を運営する、アクトインディ株式会社の開発者ブログです

チケットとコミットログを連携させる

はじめまして、6月入社のakiyamaと申します。
社内二人目のkinesisユーザです。 自宅ではDucky Yellow Keyboard使っています。

アクトインディではgitコミットログの一行目にredmineのチケット情報を入れることになっています。
またgitブランチ名にチケット番号を含める運用です(フォーマットはd/NNNN-branch-name)。
となれば、.git/hooks/prepare-commit-msgを使って自動挿入が楽そうです。

 1 #!/usr/bin/env ruby
 2 
 3 require 'json'
 4 require 'open-uri'
 5 require 'openssl'
 6 
 7 REDMINE_API_KEY=''
 8 REDMINE_URL = 'http://'
 9 
10 exit 0 if ARGV.size > 1
11 
12 branch = `git rev-parse --abbrev-ref @` || exit
13 branch =~ %r|^d/(\d+)| || exit
14 issue_no = $1
15 
16 open("#{REDMINE_URL}/issues/#{issue_no}.json?key=#{REDMINE_API_KEY}",
17      'r',
18      ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE) do |f|
19 
20   issue = JSON.parse(f.read)['issue']
21   open(ARGV[0], 'r+') do |f|
22     text = f.read
23     f.rewind
24     f.puts "#refs ##{issue['id']} #{issue['subject']}"
25     f.print text
26   end
27 end
28 

コミットをキャンセルしやすいようにチケット情報をコメントアウトしています。
先頭の#を消して3行目以降にコミットログを書けばさくさくコミットできて快適です。

初回から小ネタですが、今後ともよろしくお願いします。