リポジトリ

概要

Redmineは複数のSCMと連携できます: Subversion, CVS, Mercurial, Darcs, Git および Bazaar です.

SCMと連携するためには、Redmineが稼働するホストに適切なバイナリをインストールする必要があります。

SCM 動作確認済みバージョン 備考
Subversion 1.3 & 1.4 & 1.5 & 1.6 1.3 or higher required
CVS 1.12.12 1.12 required, won't work with CVSNT
Mercurial 0.9.3
Bazaar 1.0.0.candidate.1 & 2.0.4
Darcs 1.0.7
Git 1.5.4.2

例えばRedmineからSubversionリポジトリにアクセスする場合、svnバイナリをRedmineが稼働するホストにインストールする必要があります。Redmineは現在はRubyのSubversionバインディングを使用しません。

既存リポジトリをプロジェクトで利用する

プロジェクトの設定で、'Repository'モジュールが有効であることを確認した後に'リポジトリ'タブを開いてください。
SCMを選択し、リポジトリのURLを入力してください。

重要: 最初にリポジトリを閲覧するときは、Redmineはすべてのコミットの情報を取得しデータベースに格納します。
これはリポジトリごとに一回だけ行われますが、非常に時間がかかります。リポジトリに数百のコミットがある場合はタイムアウトすることもあります。

この問題を避けるために、リポジトリからの情報の取得をオフラインで行うことができます。リポジトリの設定をRedmineで行った後、下記コマンドを入力してください:

ruby script/runner "Repository.fetch_changesets" -e production

すべてのコミットが取得されRedmineのデータベースに格納されます。

Redmine 0.9以降では、特定のプロジェクトまたは全てのプロジェクトについて fetch_changesets を実行するためのリンクも利用できます。

http://redmine.example.com/sys/fetch_changesets (=> 全プロジェクトのチェンジセットを取得)
http://redmine.example.com/sys/fetch_changesets?id=foo (=> プロジェクト foo のチェンジセットのみを取得)

Subversionリポジトリ

一般的に使われるたいていのプロトコルに対応しています(例: http:, svn:, file:)。そのままリポジトリのURLを入力してください。

例:

http://host/path/to/the/repository

リポジトリが認証を要求する場合は、ユーザー名とパスワードを指定してください。

注意: svn+ssh://を使用しているリポジトリにアクセスする場合、,svn+sshをnon-interactiveに設定する必要があります。
そのためにはsshで鍵認証を行うよう設定が必要です。

CVSリポジトリ

下記を入力してください:

  • リポジトリのURL (path名または接続文字列, 例: :pserver).
  • モジュール名

例:

:pserver:login:password@host:/path/to/the/repository

Gitリポジトリ

ローカル環境の設定

RedmineのリポジトリブラウザでGitリポジトリの内容を参照するためには、ローカルのbareリポジトリが必要です。

例えば、"Donebox"という名前のTODO管理アプリのリポジトリをRedmineからsなしょうするとします。クローンURLは git://github.com/ook/donebox.git です。
Redmineが稼働しているサーバ上で、Redmineを実行しているユーザーからアクセス可能なディレクトリを作成してください。:

$ sudo mkdir -p /var/redmine/git_repositories
$ sudo chown rails:rails /var/redmine/git_repositories
$ cd /var/redmine/git_repositories

上記2行目についての注意: これは新しく作成されたディレクトリのオーナーとグループをrailsに変更しています。サーバの設定によって、ユーザー名・グループ名は変更する必要があります(サーバの設定によっては apacheやwww-dataとすべき場合もあります)。ユーザーはgitコマンドを実行する権限が必要であることにも注意してください。

リポジトリの作成

前述の手順が完了したら、bareリポジトリを作成します:

$ pwd
/var/redmine/git_repositories
$ git clone --bare git://github.com/ook/donebox.git donebox.git
Initialized empty Git repository in /var/redmine/git_repositories/donebox.git/
remote: Counting objects: 401, done.
remote: Compressing objects: 100% (246/246), done.
remote: Total 401 (delta 134), reused 401 (delta 134)
Receiving objects: 100% (401/401), 179.55 KiB | 185 KiB/s, done.
Resolving deltas: 100% (134/134), done.
$ cd donebox.git
$ git remote add origin git://github.com/ook/donebox.git

bareリポジトリを作成したら、Redmineでプロジェクトの「設定」画面を開き、「リポジトリ」タブの項目「バージョン管理システム」で git を選択してください。そして、項目「Path to .git directory」にbareリポジトリへのパスを入力してください (ここでの例では /var/redmine/git_repositories/donebox.git/)。入力が終わったら「作成」ボタンをクリックして設定内容を保存します。「リポジトリ」タブを開くと、gitリポジトリの内容が閲覧できるようになっているはずです。

注意: このgitリポジトリは当然自動的には更新されません。cronのジョブを登録するか、post-receiveフックを使用してfetchコマンドが自動的に実行されるよう設定する必要があります。以下に例を示します。:

echo "Post receive-hook => updating Redmine repository" 
sudo -u my_redmine_user -p secret perl -we '`cd /redmine/repositories/my_repo.git && git fetch && git reset --soft refs/remotes/origin/master`'

Note the git reset, you'll need it to update the git tree and see your changes in the Repository view. The 'soft' option is required since it is a bare repository and the default option (mixed) will fail since there is no working tree.

If you are using github, you can use the Github Hook Plugin

Windows上でのbareリポジトリの作成

bareリポジトリをWindows上で作成する場合、PATH環境変数の末尾に以下の内容を追加してください:

;%GIT_PATH%\cmd;%GIT_PATH%\bin;

GIT_PATH はGitをインストールしたディレクトリです(例: C:\Git)

Mercurialリポジトリ

Mercurialリポジトリと同期するためには、Redmineを実行しているサーバ上にリポジトリのローカルクローンが必要です。仮にRedmineがインストールされているパスが /var/www/redmine.example.com/www でMercurialのリポジトリが /var/www/sources.example.com/repo/example にあるとします。このときは、プロジェクトの設定画面のリポジトリタブ内でSCMとしてMercurialを選択して、テキストボックスには /var/www/sources.example.com/repo/example を入力してください。

設定を保存するとRedmineがMercurialのリポジトリのチェックを始めます。数秒あるいは数分後、「リポジトリ」画面を開くとリポジトリ内が閲覧できます。

Bazaarリポジトリ

リポジトリの設定画面内の"Root directory"にリポジトリのフルパスを入力してください。
例: /home/username/bzr/repo/trunk

bzrおよびbzrlibが環境変数PATHおよびPYTHONPATHで指定したパスになければなりません。
例えば、config/environment.rbに以下のような行を追加します:

ENV['PYTHONPATH'] = '/path/to/pythonlib'
ENV['PATH'] = "#{ENV['PATH']}:/path/to/bzr/bin"