Git-Redmine: GitのコミットとRedmineを連携する。チケット駆動開発にも。

おひさしぶりです。
kaoruです。
今回は、日常のGitの利用シーンでRedmineと連携できるGit-Redmineという小さなツールを作ってみたのでご紹介します。
(ツールは後ろのリンクからダウンロードできるので、ぜひお試しください。)
作業管理にRedmine、ソースコードの管理にGitを使っているプロジェクトは最近増えてきていると思います。
Redmineのチケットを見て作業内容を確認、該当するソースコードを修正、最後にGitでコミットしますよね。
Gitでコミットする時には、コミットメッセージというのを書きます。ここには、作業内容や変更点を簡単に記録します。
でも、Redmineを使って作業管理をしているプロジェクトでは、作業内容や変更点はRedmineのチケットの内容と基本的に同じですよね。
だからコミットメッセージを入力するとき、いままで、ウインドウを2つ並べて、Redmineからコミットメッセージの入力欄へのコピペを繰り返し・・・、チケットの番号を書き加えて・・・、とういうことをしていませんでしたか?
これだと、毎回、単純な作業にうんざりだし、コピペミスも怖い。
しかも、コミットメッセージが書くのが面倒で、ついつい2,3文字で済ませちゃった経験ありませんか?
git-redmine-nailbook3.jpg
面倒くさいことはツールで解決!
Git-Redmineを使うと、こんな問題を解決できます。
コミット時に作業の流れでチケットを確認できるので、巷で流行りのチケット駆動開発にもぴったりです。

できること

コマンドラインから、Redmineに登録されているチケットを確認できます。
Gitコミット時に、Redmineのチケットのタイトルをコミットメッセージに利用できます。
このツールは、Redmineが用意しているREST APIを利用しています。また、ソースコードをカスタマイズしやすいようにPythonで書いています。

インストール方法

1. 本ツール(Git-Redmine)のソースファイルを取得します。
(例)

$ git clone git://github.com/coiled-coil/git-redmine.git

2. git-redmineというファイルを実行パスの通った場所にコピーします。
(例)

$ cd git-redmine
$ mkdir -p $HOME/bin
$ cp src/git-redmine $HOME/bin/

git-redmineファイルの1行目にpythonのパスが書かれています。
/usr/bin/python以外を利用する場合はパスを書き換えてください。
Python 2.6 以降が必要です。CentOS5では、/usr/bin/python26 などに書き換えてください。
3. RedmineのAPIキーを設定します
APIキーは、Redmineログイン後に、個人設定の中に表示されます。(下の赤線部分)
git-redmine-apikey.png
もし、表示されない場合はREST API機能がオフになっている可能性がありますので、
管理者にお問い合わせください。また、古いRedmineでは利用できない可能性があります。
(例)

$ git config --global redmine.apiKey xxxxxxxxxxxxxxxxxxxxxxxxxxx

4. プロジェクトのGitレポジトリに、プロジェクトのRedmineのURLを設定します。
(例)

$ cd /repos/YOUR-PROJECT
$ git config redmine.projectUrl http://SAMPLE.COM/repos/YOUR-PROJECT

使い方

1. チケットの一覧を表示する。

$ git redmine

2. あるチケットの詳細を表示する。

$ git redmine 1234

3. あるチケットの情報を利用して、コミットを行う。

$ git redmine commit 1234

4. あるチケットの情報を利用して、コミットを行う。同時にチケットの達成率を90%に更新する。

$ git redmine commit 1234 --done-ratio=90

5. あるチケットの情報を利用して、コミットを行う。同時にチケットの達成率を100%、ステータスを解決済みに更新する。

$ git redmine commit 1234 --done-ratio=100 --status=3

ソースコード

こちらにソースコードを置いています。
https://github.com/coiled-coil/git-redmine



Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 16271409 bytes) in /home/yumeco/www/prod/wp-includes/wp-db.php on line 1171