Redmineでリポジトリの情報を定期取得したい

RAILS_ROOTで下記コマンドを実行する。
うちの場合だと、RAILS_ROOT は /var/lib/redmine

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

実行してみたらwarningがでてきた。
rails のバージョンが 2.3.5 で rubygems のバージョンが 1.3.6 以降の時に起こる」らしい。
気にしなくてもいいみたい。バージョンあがったら消えるみたいだ。

実際の運用例をいくつか

(例1)/etc/crontabに記述して一定間隔ごとに自動的に取得するようにする。

これは30分単位

 */30 * * * * root cd /var/lib/redmine && ruby script/runner "Repository.fetch_changesets" -e production
(例2)コミットと同時にリポジトリの情報を取得する

参考URL
小技(0.9): コミットと同時にリポジトリの情報を取得する | Redmine.JP Blog

Subversionのpost-commitスクリプトでコミットごとに例1のスクリプトを実行する。
post-commitの中身は↓の感じ。

#!/bin/sh
REPOS="$1"
REV="$2"

# 以下は実際には改行無しで1行で記述
/usr/local/bin/ruby -ropen-uri -e 'open("http://Redmineサーバ/sys/fetch_changesets?key=APIキー")'

# wgetがインストールされていれば以下のようにしてもよいです
# /usr/bin/wget -q -O /dev/null http://Redmineサーバ/sys/fetch_changesets?key=APIキー

APIキーはRedmineの設定を見ればわかるはず。

      • -

今回は例2でやってみた。
post-commitを作成するのだが、post-commit.tmplがあるのでそれを参考にする。
templateがあるところに配備すればおっけーのはず。
対象リポジトリのhooksディレクトリに作る。

#!/bin/sh
REPOS="$1"
REV="$2"

# 以下は実際には改行無しで1行で記述
/usr/local/bin/ruby -ropen-uri -e 'open("http://Redmineサーバ/sys/fetch_changesets?key=APIキー")'


自動取得するようになったので、リポジトリ開くたびにコミットを自動取得するのチェックをはずしました。