redmineでsvnの設定をしたら設定画面で500エラーになる

redminesvnリポジトリを設定したら、そのプロジェクトの[設定]をクリックするとInternal Server Error(500)が出るようになった。

発生条件

  1. WindowsからredmineLinuxへ移行した (このときwindowsのパスが設定されたdbを丸ごと移行)
  2. 同プロジェクトにLinuxに移行してから別のリポジトリを追加(あるいは編集かも?)
  3. ActionView::TemplateError (comparison of Repository::Subversion with Repository::Subversion failed みたいなエラーが出る(詳しくは以下)

対策

cat redmine/log/production.log

参考のため長めにログを張っておく。

Processing ActivitiesController#index (for 192.168.0.7 at 2012-06-05 11:12:35) [GET]
  Parameters: {"controller"=>"activities", "action"=>"index", "id"=>"hogehoge"}
Rendering template within layouts/base
Rendering activities/index
Completed in 395ms (View: 253, DB: 13) | 200 OK [http://192.168.0.1/redmine/projects/hogehoge/activity]

Processing ProjectsController#settings (for 192.168.0.7 at 2012-06-05 11:12:39) [GET]
  Parameters: {"controller"=>"projects", "action"=>"settings", "id"=>"hogehoge"}
Rendering template within layouts/base
Rendering projects/settings

ActionView::TemplateError (comparison of Repository::Subversion with Repository::Subversion failed) on line #13 of app/views/projects/settings/_repositories.html.erb:
10:     </tr>
11:   </thead>
12:   <tbody>
13:   <% @project.repositories.sort.each do |repository| %>
14:     <tr class="<%= cycle 'odd', 'even' %>">
15:       <td><%=h repository.scm_name %></td>
16:       <td><%=h repository.identifier %></td>

    app/views/projects/settings/_repositories.html.erb:13
    app/views/common/_tabs.html.erb:24:in `block in _run_erb_app47views47common47_tabs46html46erb_locals_object_tabs'
    app/views/common/_tabs.html.erb:23:in `each'
    app/views/common/_tabs.html.erb:23
    app/helpers/application_helper.rb:231:in `render_tabs'
    app/views/projects/settings.html.erb:3
    <internal:prelude>:10:in `synchronize'

以下略

データベースを弄った大まかな流れ

当該プロジェクトの設定全般に触れなくなってしまったので、データベースを勘で編集したった。てへぺろ(・ω<)
(redmineの仕組みもdbのスキーマも全く完全に理解しないで編集してます。よい子は真似しない)

とりあえずバックアップを取って…

# mysqldump -u redmine -p<pass> redmine(db名) > dbsnap

ログインする

# mysql -u redmine -p<pass>
# use redmine;

で、

怪しそうなモジュールを無効にしてみると、設定画面が表示されるようになった!
でも結局[リポジトリ]モジュールを有効にするとエラー…

> delete from enabled_module where name=repository;

あやしげなリポジトリ(file:///D:/projects/svn/hogehoge みたいなpath)を削除してみると、正常に戻った!(ような気がする!)

> delete from repositories where id=8;

\(^^)/直ったー

環境

CentOS release 6.2 (Final), redmine1.4.1 , svn version 1.6.11 (r934486)

# gem list
*** LOCAL GEMS ***
actionmailer (2.3.14)
actionpack (2.3.14)
activerecord (2.3.14)
activeresource (2.3.14)
activesupport (2.3.14)
bigdecimal (1.1.0)
bundler (1.1.3)
coderay (1.0.6)
daemon_controller (1.0.0)
edavis10-object_daddy (0.4.3)
fastercsv (1.5.5)
fastthread (1.0.7)
i18n (0.4.2)
io-console (0.3)
json (1.5.4)
metaclass (0.0.1)
minitest (2.5.1)
mocha (0.11.4)
mysql (2.8.1)
mysql2 (0.2.18)
net-ldap (0.3.1)
passenger (3.0.12)
pg (0.13.2)
rack (1.1.3)
rails (2.3.14)
rake (0.9.2.2)
rdoc (3.9.4)
rmagick (2.13.1)
ruby-openid (2.1.8)
shoulda (3.0.1, 2.10.3)
shoulda-context (1.0.0)
shoulda-matchers (1.0.0)
sqlite3 (1.3.6)
tzinfo (0.3.33)