Windows 7環境において、RedmineとSubversionのインストール方法と、統合開発環境NetBeansとSubversionを連携したバージョン管理方法について紹介してきました。今回は第7回で取りあげたRedmineと、第8回第9回で取りあげたSubversionを連携させ、ソフトウェア開発管理の仕組みを構築する方法をご紹介します。

Subversionのリポジトリの準備

Redmineでは、1つのプロジェクトに複数のリポジトリを割りあてることができます。リポジトリを割りあてておくことで、ファイルの変更履歴やコミットログをプロジェクトやチケットに紐付け、Redmineによるプロジェクト管理とSubversionによるファイルのバージョン管理を連携させることが可能になります。

RedmineとSubversionリポジトリを連携させることで、Redmine上でのプロジェクト管理にさまざまな情報を紐付けることができます。

・チケットに対するコードの修正履歴を、チケットからSubversionの該当リビジョンに辿れるように
・Subversionのコミットログに作業に要した時間を記録し、チケットに作業時間を記録できるように
・Subversionのコミットログに特定のキーワードを含め、チケットのステータスや進捗の入力を自動化
・プロジェクトの活動(Activity)に、コード修正に関する活動の進捗を随時表示できるように

Redmineとバージョン管理を連携した、実際の運用例のスクリーンショット。バージョン管理システムには「Mercurial」を使用している。チケットにバージョン管理のコミットログとリビジョンが関連づけられている

チケット画面のリビジョン番号をクリックすると、バージョン管理システムの該当のリビジョンに移動し、どのタイミングでどのファイルが誰によって変更されたかが確認できる

RedmineとSubversionの連携に先立ち、Subversionで作成するリポジトリをRedmineのプロジェクト単位に合わせてあらかじめ作成しておく必要があります。たとえばRedmine上で「マイナビクリエイター スキルアップセミナー」という名前のプロジェクトを作成した場合は、Subversionで作成するリポジトリの単位も同一にしておいた方が管理が容易になります。

RedmineとSubversionの連携設定手順について

RedmineとSubversionの連携を設定する際、おおまかに2種類の設定をおこないます。

・Redmineに対して、Subversionの実行パスを指定する
・Redmineのプロジェクトに対して、Subversionのリポジトリを指定する

■Redmineに対して、Subversionの実行パスを指定する

Redmineに対して、Subversionの実行パスを指定します。管理者権限でRedmineにログインし、管理 > 設定より、リポジトリタブを開いて設定します。

第7回第8回第9回でご紹介したとおりに、Web Platform Installer経由でRedmineを、VisualSVNを使用してSubversionをインストールした場合は、特に設定することなく最初からRedmineがSubversionの実行パスを認識している状態になります。

■Redmineのプロジェクトに対して、Subversionのリポジトリを指定する

Redmineで作成したプロジェクトの設定 > リポジトリより、関連付けたいSubversionのリポジトリを指定します。

なお、デフォルトの設定でのRedmineでは、自己署名の証明書を使用しているSubversionリポジトリにアクセスすることができません。

自己署名の証明書を使用したSubversionリポジトリにアクセスしても、404エラーが返る。RedmineのログにはServer SSL certificate untrustedエラーが出力される

VisualSVNでSubversionをインストールした場合、自己署名の証明書を使用してhttps経由でSubversionのリポジトリにアクセスすることになります。このため、そのままではRedmineからはSubversionのリポジトリにアクセスすることができません。

RedmineとSubversionと連携するためのファイル - subversion_adapter.rb を修正する方法がありますが、筆者の環境ではうまく動作しなかったので、ここではVisualSVNの接続方式にhttpsを使用するのを止め、8080ポート経由のhttp接続でSubversionへ接続するように設定変更をおこないました。

VisualSVNのプロパティを開き、[Use secure connection (https://) ]のチェックを外す。80ポートはIISが使用しているので、8080ポートに変更

設定変更後、http経由でSubversionリポジトリにアクセスできることを確認

Redmineプロジェクトの設定に戻り、リポジトリ情報を入力します。連携させるプロジェクト名と、Subversionのリポジトリ情報は次のとおりです。

Redmineプロジェクト名 www.kiku33.com 改修
リポジトリURL http://localhost:8080/svn/NewProject/

SubversionリポジトリにアクセスするためのログインID/パスワードを入力し、[保存]ボタンをクリックしてRedmineのプロジェクトにSubversionのリポジトリ情報を関連付けます。

リポジトリ情報を入力

リポジトリ情報入力後の設定画面

リポジトリの情報を保存すると、プロジェクトのタブに「リポジトリ」が表示されるようになります。

Redmineのリポジトリタブ。Subversionリポジトリのリビジョンや、ファイルツリーを表示できるように

NetBeansからコミットし、Redmineで情報が紐付けられるか動作確認

第9回でSubversionの連携設定をおこなったNetBeansからコミットをおこない、Redmineのチケットと連携してみましょう。その前に、Redmineと連携を取るためのコミットログの記述ルールについてご紹介します。

■コミットログのルール

Subversionのコミットログに、特定のキーワードを含めることによって、Redmineのチケットとの連携が可能になります。これらのキーワードについては、Redmineの設定から変更が可能です。初期設定にて定義されているキーワードをご紹介します。

キーワード 内容 設定によるキーワードの変更可
refs / references / IssueID チケットにコミットを紐付けるための参照用キーワード
fixes / closes チケットにコミットを紐付け、チケットのステータスや進捗率を変更するための修正用キーワード
# チケットの番号 ×
# 作業時間の記録 ×

■コミットログの記入例(1)

デザインテンプレートを3ペインに変更中

refs #987 @6.5h

■コミットログの記入例(2)

在庫引き当てがIEの互換モードで動作しない不具合を修正

fixes #1234 @3h
fixes #1233 @1h

キーワードを使用したコミットログの書式は

(参照用キーワードまたは修正用キーワード) #(チケット番号) @(作業時間)

となります。コミットログには記入例(2)のように、複数チケットへの関連を記載が可能です。なるべく1回のコミットで1枚のチケットを処理するように心がけた方が、後からRedmine経由でリポジトリやコミットログを参照する際に必要な部分だけを参照できます。

参照用キーワード(初期値: refs / references / IssueID)

ファイルの変更内容をコミットする際に、refs / references / IssueID を含めることで、そのコミットがRedmineのどのチケットに関連するかを紐付けできます。チケット番号は、後述の # キーワードで指定します。

修正用キーワード(fixes / closes)

ファイルの変更内容をコミットする際に、fixes / closes を含めることで、そのコミットがRedmineのどのチケットに関連するかを紐付けできます。参照用キーワードと異なり、修正用キーワードでは紐付けたチケットのステータスや進捗を自動で修正する特性があります。初期値はステータスを「終了」に。進捗を「100%」に設定します。チケット番号は、後述の # キーワードで指定します。

#

チケット番号を指定します。# も含め、チケット番号は半角英数で指定する必要があります。

@

実際にかかった作業時間を記録します。Redmineの設定で、「コミット時に作業時間を記録する」にチェックを入れておく必要があります。また、Redmineのリポジトリ設定でユーザを指定しておく必要があります。

作業時間は、Redmineのチケットに記録されていきます。利用できる単位や形式の例は次のとおりです。

内容
1.25 1時間15分
2h30m 2時間30分
3h 3時間
.5 30分
0.75h 45分
45m 45分
3:20 3時間20分

■チケットとの紐付け

チケットとSubversionのコミットを紐付けてみましょう。進行中のプロジェクトにおいて、要望をチケット化します。

NetBeansからSubversionリポジトリに対してコミットをおこないます。なお、この手順ではリポジトリURLが変更されているので忘れずに変更作業をおこなってください。リポジトリURLの変更は、チーム > 再配置からおこないます。

リポジトリURLの変更

ファイルに対して修正作業をおこない、コミットをおこないます。コミットログに、各種キーワードを入力してコミットします。

コミット後、Redmineで該当プロジェクトのリポジトリタブを開きます。

リポジトリ画面を開くことで、コミットログとチケットの関連付けがおこなわれる

リポジトリ画面を開くことで、Redmineのチケットとコミットログとの関連付けがおこなわれます。

関連付けられたチケット。コミットログに修正用キーワード「fixes」を含めていたため、チケットのステータスや進捗率が変更されている

チケット右下のリポジトリ情報より、リビジョン番号をクリックすることでファイルツリーや変更箇所の差分を確認することが可能になりました。

社内外の打ち合わせの内容をRedmineでメンバー間で共有し、タスクをチケット化。議論をRedmineのフォーラムでおこない、スケジュールをチケットとガントチャートで可視化。プログラムのソースコードをSubversionでバージョン管理して、変更内容を蓄積。

RedmineとSubversionを連携し、チケットとSubversionのリビジョンを関連付け、「誰が」「いつ」「どのチケットに対応するために」「ソースコードのどの部分を」「どのように変更したか」を関連付け、目的の情報にいつでも簡単にアクセスすることが可能になります。コミットと同時に作業時間を記録することで、開発者の工数管理も平行して実施できます。

日々情報を整理して管理し、自分はもちろん、仕事の協力者がいつでも各種タスクやソースコード、それまでの経緯を共有できる状態にしておくのはWebクリエイターのたしなみです。Redmineでドキュメントと仕事を整理し、バージョン管理システムでコードを整理し、自分の手に馴染むエディタやツールを使って、より快適なコーディング生活を送りましょう。

富田宏昭 Hiroaki Tomida
「株式会社キクミミ」でFileMakerやオープンソース言語などを用いた、Webアプリ開発 企業の業務改善のためのシステム開発や環境構築を行っている。主な著書に「HTML5/JavaScriptとPhoneGapで作るiPhoneアプリ開発入門」(マイナビ)など。