Redmine入門 - バージョン管理システムとの連携
ある機能の追加やバグの修正に対するソースコードの修正内容とチケットを関連付けることができると
管理の幅が広がります。
Redmine では Subversion などバージョン管理システムとの連携手段がいろいろと用意されています。

連携の制限
バージョン管理システムと Redmine の連携の機能はいろいろあると書きましたが、 "Redmine" → "バージョン管理システム" の連携はすべて読み込みだけで、 Redmine からバージョン管理システムに登録されたファイルなどに変更を加えることは出来ないようになっています。逆に "バージョン管理システム" → "Redmine" では変更を加える機能があります。
この場合は バージョン管理システムと Redmine のユーザー名を一致させます。
違うユーザー名の場合は [リポジトリ] の設定で関連づけを行う必要があります。
利用可能なバージョン管理システム
Redmine では次のものが使用できます。(Redmine 1.3.0)- Subversion
- Darcs
- Mercurial
- CVS
- Bazaar
- Git
- Filesystem
Redmine のサーバーのローカルディレクトリをリポジトリとして使用します。 あまり、使うことはないのではないかと思います。
リポジトリの登録
Redmine でバージョン管理システムと連携するためには、 まずプロジェクトごとにプロジェクトのソースのあるリポジトリのパスを登録する必要があります。 登録するにはプロジェクトの [設定] の [リポジトリ] タグで指定します。ここで前節のバージョン管理システムから使用するバージョン管理システムを選択します。 ただし、システムの設定で使用可能なバージョン管理システムは変更できるので、 使えるものだけがリストから選択可能になっています。

バージョン管理システムを選択するとそのシステムごとの設定が表示されるので、 リポジトリの URL などを設定します。
設定後、プロジェクトメニュー [リポジトリ] のタグを選択するとリポジトリが表示されるようになります。 一度作成すると、 ユーザー名など以外は変更できなくなるので、 リポジトリの URL を変更したい場合は一度 [削除] する必要があります。
リポジトリブラウザ
[リポジトリ] タグからファイルの閲覧、ログ、差分の表示などが出来ます。 この機能はリポジトリブラウザと呼ばれています。リポジトリ内のファイルを表示する場合もコードハイライトされます。
このときも Wiki のコードハイライトのように CodeRay が使用されているのですが、プラグインを使うとUltravioletなどに変更することが出来ます。 こちらはコードハイライトできる種類が大量にあるので、 対応できない言語があって困るということはほとんどないでしょう。
Code Review プラグイン を使うとリポジトリのファイルや差分を表示する時にコードに対して、 コメントを付けることが出来ます。
このコメントの実体はチケットで、コメント時にメール通知も行われたりするので、 コードレビューに使うことが出来ます。
Wiki リンク(Redmine → バージョン管理システム)
Redmine からバージョン管理システムへの連携では Wiki でのリンクがあります。
r64 のように rリビジョン番号 と書くとリポジトリブラウザの指定リビジョンへのリンクとなります。
また、リポジトリのファイルを指定することも出来ます。
source:リポジトリからの相対パス source:foo/bar.c source:foo/bar.c@64#152 リビジョン64 の 152 行目この記述によりリポジトリブラウザ上の指定のファイルへのリンクとなります。 リポジトリ上のページではなく、直接ダウンロードしたい場合は source ではなく export をキーワードに使用します。
チケットとの連携 (バージョン管理システム → Redmine)
チケットとの関連付け
チケットとコードの修正を関連づける一番簡単な方法は、 バージョン管理システムでコミットする際のコメントの記述で Wiki のように #チケット番号 と書くことです。 こうするとリポジトリブラウザでログを表示した際にそれがチケットへのリンクとなっています。さらに "#チケット番号" の前に refs キーワードを付けると、そのチケットのページで関係しているリビジョンとしてコメントとともに表示されます。
term マクロがエラーとなる不具合修正 (refs #813)

コメントを記述する場合次の点に注意して下さい。
- refs と日本語をつなげない
- refs と # の間にスペース
チケットステータスの変更
バグなどの修正が終わって、バージョン管理システムでコミットするとき、 refs ではなく closes を使うと関連付けに加えて、以下の項目を変更することができます。- チケットステータス : ただし、デフォルトでは変更されない
- 進捗率 : デフォルトは 100%

このチケットの連携の説明ではデフォルトの設定のままのキーワードを記述していました。
実はこの refs などのキーワードと変更される項目の状態はシステムの設定で変更することが出来ます。 しかし、この設定をみることができるのはシステム管理者だけなので、 一般ユーザーは現在の設定がどうなっているのか知ることは出来ません。
こういった場合にはやはりRedmine インフォメーション プラグインです。 [情報] → [設定] から現在のシステムでのキーワード等の設定をみることが出来ます。

コメントを間違ったら ?
このチケットの連携ですが、以下の制限があるので、 チケット番号を間違った場合でも他のプロジェクトに影響を与えることはまずありません。- プロジェクトのリポジトリに登録された URL 以下の変更であること
- コミットする人がプロジェクトメンバーであること
例えば、 closes で [終了] に変更するような場合、 コミットしたメンバーに [終了] に変更する権限がなかったとしても変更できてしまいます。
また、 変更後を [解決] などにしていて、 [解決] のステータスのないトラッカーを作っていたとします。 そのトラッカーのチケットをキーワードで変更した場合には、ステータスを用意していないにもかかわらず、 [解決] になってしまいます。 そうした場合、灰色表示で管理者でも変更できなくなってしまいます。変更するためにはいったん [解決] のステータスを持つ別のトラッカーに変更する必要があります。
コメントで連携するための注意点を記述しましたが、 チケット番号を間違えたり、スペルミスしたりと意外と間違ってしまうことは多いです。
バージョン管理システムにはコメントを後から変更する機能があるものもありますが、 後から変更されたコメントの場合は関連のやり直しはやってくれません。
Commit Relation Editor プラグインを使うと後からでもチケットとの関連付けを変更することができるようになります。
Redmine のプラグインではありませんが、 Subversion のクライアントである TortoiseSVN には TortoiseSVN Redmine Issues Plugin というプラグインがあります。 これを使うと TortoiseSVN でのコメント入力時にチケット番号を選択して選べるようになります。
GitHub, Bitbucket でのファイルのダウンロード方法
最近、 GitHub
や Bitbuket
でソフトウェアを公開している人が増えてきました。
今回はこれらのサイトからファイルをダウンロードする方法の説明です。
ダウンロード対象
ここで説明するダウンロードの対象はソフトウェアのソースコードです。プログラミング言語にはスクリプト言語とコンパイル型の言語があります。 スクリプト言語はソースコードを直接実行するので、ソースコードをダウンロードします。
一方、コンパイル型言語では、コンパイルして exe などの実行ファイルにして使います。 実行ファイルはプロジェクトのトップページなどでダウロードページが紹介されていることが多いので、 そちらからダウンロードして下さい。
ダウンロードページがない場合にはソースをダウンロードして、自分でコンパイルする必要があります。
分散バージョン管理システムの概要
GitHub, Bitbucket のサイトでは Git か Mercurial の分散バージョン管理システムでソースファイルが管理されています。ただダウンロードするだけでも、ある程度は知っておいた方がわかりやすいでしょう。 先にバージョン管理について簡単に説明します。
Tag
プログラムの開発はソースの編集、登録を行って進んでいきます。バージョン管理システムには、 ある時点のソースに名前をつける Tag 機能があり、 リリース時のバージョン番号などに使われます。

Mercurial では最新のソースは特に tip と呼ばれます。
Brunch
基本的にソースの開発ラインは 1 本です。しかし、リリース後、メインの開発は進んでいるけど、 バグ修正だけを入れてリリースしたい時があります。 こうした場合、ソースコードを分岐して管理します。 この個々のラインが Branch です。

メインの Branch は master や default と呼ばれます。
リポジトリーとクローン
バージョン管理システムでは、過去の履歴を含めてソースコードの情報を持っています。 これをリポジトリーといいます。ダウンロードではソースコードの一時点を取り出してくるのに対して、 クローンではリポジトリーをまるごと自分の PC に複製します。
(正確には過去の履歴全てというわけではありませんが)
クローンの特徴は次のようなところです。
- デメリット
- Git 等のバージョン管理システムをインストールし、使い方を覚える必要がある。
- 過去の履歴という余分なデータがある
- メリット
- バージョンアップの更新が簡単
GitHub
GitHub はその名のとおり Git で管理するホスティングサービスです。
圧縮ファイルでのダウンロード
GitHub では、ソースファイルを圧縮ファイルとしてまとめてダウンロードできます。 ただ、プロジェクトのトップページからすぐダウンロードするのはやめましょう。ここで表示されているのは、メインブランチの最新です。 これは最新バージョンというわけではなく、開発版です。
バージョンを指定してダウンロードするには、 [releases] のタブを選択します。 バージョンの一覧が表示されるので、ここでバージョンや圧縮形式を選んでダウンロードします。

ただ、バージョンが一つもない場合もあります。
この場合には、先程のプロジェクトのトップページからダウンロードします。 ページ右にある [Download ZIP] ボタンを選択するとダンロードが始まります。

ファイル単体でのダウンロード
ダウンロードしたいファイルが一つだけという場合もあります。 こういった場合、そのファイルだけを取得することもできます。まず、バージョンを指定します。
[branck:master] のボタンをクリックし、 [Tags] からバージョンを選択します。 (何もない場合もあります)

次にファイルのリストから対象をクリックして、そのファイルを表示させます。
[Raw] ボタンを右クリックして、 [名前を付けてリンク先を保存] から保存します。

追記 2014-01-29
GitHub のページが少し変更になったので、画像を差し替えて、記事を修正しました。Bitbucket
Bitbucket は Git または Mercurial で管理するホスティングサービスです。
圧縮ファイルでのダウンロード
Bitbucket の場合はまず [Downloads] のタブを選択して、 ダウンロードのページにします。ダウンロード用のファイルが用意されている場合はここにあります。

なければ [Tags] のタブを選択します。
ここからダウンロードしたいバージョンの圧縮ファイルを取得します。

ファイル単体でのダウンロード
ダウンロードしたいファイルが一つだけの場合には、 まず [Source] タブを選択し、ファイルのリストを表示します。次に [default] のボタンをクリックし、 [Tags] のバージョンを選択します。

後は、 GitHub と同様に対象ファイルを表示して、 [Raw] ボタンからリンク先を保存します。

Redmine お勧めプラグイン - Add Subversion Links
プラグイン紹介のコーナー始めることにしました。 不定期ですが、お勧めプラグインや気になるプラグインを紹介していきたいと思います。
一回目は Add Subversion Links です。これは Subversion の http ページへのリンクを表示するプラグインです。
- Add Subversion Links - Plugins - Redmine
- redmine_add_subversion_links/README.ja.textile at master ・ masamitsu-murase/redmine_add_subversion_links ・ GitHub (日本語)
Subversion には、 Subversion 自身にリポジトリーの内容を http ページで表示する機能があります。
このプラグインを入れると、 Redmine のリポジトリーや Wiki での
r1234のような表記のところに Subversion の http ページへのリンクを表示するようになります。


最初このプラグインを知った時、正直
だから ?と思いました。
やっぱり、説明はちゃんと読むべきですね。 このプラグインは Chrome や Firefox の Open TortoiseSVN プラグインと組み合わせた時、初めて真価を発揮します。
ブラウザーのプラグインを入れているとリンクをクリックした時に TortoiseSVN が開くようになります。
Redmine 上から確認できるとは言っても、 やはりディスクトップアプリの方が速いし、使いやすいです。 Redmine からすぐ TortoiseSVN を開けて、とても便利になります。
インストール
redmine.org の Plugins Directory から zip ファイルをダウンロードします。 データベースを使うタイプではないので、 (RedmineRoot)/plugins ディレクトリーに展開し、 Redmine を再起動すれば、動作します。注意点としては、 プラグイン用の画像ファイルを使うので、 プラグインのディレクトリー名は必ず redmine_add_subversion_links でなければなりません。 ただ、 zip ファイルから展開すれば、その名前になっています。