RedmineでMercurialを使う方法

Redmine+Mercurial連携でちょっとハマったのでメモ。

1. config/environment.rb に python のパスを記述

ENV['PYTHONPATH'] ||= '/usr/local/bin/python'

2. mercurial_adapter.rb に hg のパスを記述

+++ lib/redmine/scm/adapters/mercurial_adapter.rb
@@ -23,7 +23,7 @@
       class MercurialAdapter < AbstractAdapter
         
         # Mercurial executable name
-        HG_BIN = "hg"
+        HG_BIN = "/usr/local/bin/hg"

3. Redmine 上でリポジトリのディレクトリを指定

f:id:mirakui:20090524182619p:image

4. 完成

こんな感じになる。
http://redmine.tsuyabu.in/repositories/show/tohaecall

メモ

「なんかアレのパス通って無いのかな?」みたいな事を思ったら、 log/scm.stderr.log に shell のエラーログが溜まるようになっているので、それを見るといいかも。
俺の場合は、

sh: hg: command not found

とか出てました。
このエラーは、lib/redmine/scm/adapters/abstract_adapter.rb の中の shellout 関数の中から出力されるもので、 development 環境でないと出力されません。

172         def self.shellout(cmd, &block)
173           logger.debug "Shelling out: #{cmd}" if logger && logger.debug?
174           begin # changed mirakui 2009/05/24
175           #if Rails.env == 'development'
176             # Capture stderr when running in dev environment
177             cmd = "#{cmd} 2>>#{RAILS_ROOT}/log/scm.stderr.log"
178           end

productionでもこのエラーを見たかったので、コメントアウトしてしまいました。