Freelance Web Engineer

コミットしたらチケットクローズする

2011-02-06  redmine, subversion, project-management

前回に引き続きRedmine関連です。今回はチケットに関連するコミットをしたときに、そのチケットのステータスを「終了」させる設定です。

環境は以下の通り:

Redmine
1.1.1.stable.4794
SCM
Subversion 1.6.6 (r40053)

1. Redmine設定

管理 > 設定 > リポジトリ で、以下のように設定します。

スクリーンショット

最初は「コミットを自動取得する」だけチェックすればいいのかと思ったのですが、やっぱりSubversionのpre-commitフックを使わないとだめでした。そのために「リポジトリ管理用のWebサービスを有効にする」と「APIキー」を設定します。

APIキーは「キーの生成」をクリックすると自動で生成されるのでそれを使います。

また、コミットコメント内のキーワードと、遷移先ステータスの設定は以下の部分です。

スクリーンショット

上記の例だと、fixes #[チケットID] とコミットコメントに設定することで、該当チケットが「終了」ステータスに遷移し、進捗が100%になります。

2. Subversionの設定

該当プロジェクトのリポジトリディレクトリに移動し、hooksディレクトリの中にあるpost-commit.tmplをコピーし、post-commitファイルを作成します。

$ cp post-commit.tmpl post-commit

post-commitを以下のように編集します。

#!/bin/sh

REPOS="$1"
REV="$2"

# auto update redmine tickets
/usr/bin/wget -q -O /dev/null --http-user=[ベーシック認証のユーザー名] --http-passwd=[ベーシック認証のパスワード] http://[Redmineのホスト]/sys/fetch_changesets?key=[APIキー]&id=[プロジェクトID]

[]部分は適当に置き換えてください。 –http-user/–http-passwdは、Redmineにベーシック認証をかけている場合に必要です。

最後にpost-commitに実行権限を付与します。Redmine実行ユーザーが実行できるようにしてください。

$ chmod +x post-commit

3. 確認

適当にチケットを確認し、そのチケットを終了させるコミットをしてみましょう。 チケットID: 12 コミットコメント: fixes #12

スクリーンショット

きちんと「終了」ステータスになりましたね!

comments powered by Disqus