Defect #4494
closedMercurial access not working in jruby
0%
Description
When I try to access a mercurial repository with Redmine running under jruby I get the following error message:
Processing RepositoriesController#show (for 192.168.1.20 at 2009-12-28 01:03:07) [GET] Parameters: {"controller"=>"repositories", "action"=>"show", "id"=>"test"} SQL (1.0ms) SELECT max(settings.updated_on) AS max_updated_on FROM settings User Load (0.0ms) SELECT * FROM users WHERE (users.id = 1) AND (users.status = 1) AND ( (users.type = 'User' OR users.type = 'AnonymousUser' ) ) Project Load (0.0ms) SELECT * FROM projects WHERE (projects.identifier = 'test') LIMIT 1 Repository Load (0.0ms) SELECT * FROM repositories WHERE (repositories.project_id = 1) LIMIT 1 Shelling out: hg -R '/repos/test/' root EnabledModule Load (1.0ms) SELECT * FROM enabled_modules WHERE (enabled_modules.project_id = 1) Setting Load (0.0ms) SELECT * FROM settings WHERE (settings.name = 'autofetch_changesets') LIMIT 1 Shelling out: hg -R '/repos/test/' root Shelling out: hg -R '/repos/test/' --cwd '/repos/test/' locate -r tip TypeError (can't convert nil into String): app/models/repository/mercurial.rb:39:in `entries' app/models/repository/mercurial.rb:35:in `each' app/models/repository/mercurial.rb:35:in `entries' app/controllers/repositories_controller.rb:72:in `show' /opt/jruby/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' /opt/jruby/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' /opt/jruby/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' /opt/jruby/lib/ruby/1.8/webrick/server.rb:162:in `start' /opt/jruby/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' /opt/jruby/lib/ruby/1.8/webrick/server.rb:95:in `start' /opt/jruby/lib/ruby/1.8/webrick/server.rb:92:in `each' /opt/jruby/lib/ruby/1.8/webrick/server.rb:92:in `start' /opt/jruby/lib/ruby/1.8/webrick/server.rb:23:in `start' /opt/jruby/lib/ruby/1.8/webrick/server.rb:82:in `start' Rendering /root/src/redmine/public/500.html (500 Internal Server Error)
it works without problems when running under ruby mri:
Processing RepositoriesController#show (for 192.168.1.20 at 2009-12-28 01:37:18) [GET] Parameters: {"action"=>"show", "id"=>"test", "controller"=>"repositories"} SQL (0.3ms) SELECT max("settings".updated_on) AS max_updated_on FROM "settings" User Load (0.7ms) SELECT * FROM "users" WHERE ("users"."id" = 1) AND (users.status = 1) AND ( ("users"."type" = 'User' OR "users"."type" = 'AnonymousUser' ) ) Project Load (0.6ms) SELECT * FROM "projects" WHERE ("projects"."identifier" = 'test') LIMIT 1 Repository Load (0.4ms) SELECT * FROM "repositories" WHERE ("repositories".project_id = 1) LIMIT 1 Shelling out: hg -R '/repos/test/' root Shelling out: hg --debug --encoding utf8 -R '/repos/test/' log -C --style '/root/src/redmine/lib/redmine/scm/adapters/mercurial/hg-template-1.0.tmpl' --limit 1 Repository::Mercurial Update (0.6ms) UPDATE "repositories" SET "root_url" = '/repos/test' WHERE "id" = 6 EnabledModule Load (1.1ms) SELECT * FROM "enabled_modules" WHERE ("enabled_modules".project_id = 1) Setting Load (0.4ms) SELECT * FROM "settings" WHERE ("settings"."name" = 'autofetch_changesets') LIMIT 1 Shelling out: hg -R '/repos/test/' root Shelling out: hg --debug --encoding utf8 -R '/repos/test/' log -C --style '/root/src/redmine/lib/redmine/scm/adapters/mercurial/hg-template-1.0.tmpl' --limit 1 Changeset Load (0.6ms) SELECT * FROM "changesets" WHERE ("changesets".repository_id = 6) ORDER BY changesets.committed_on DESC, changesets.id DESC LIMIT 1 Fetching changesets for repository /repos/test Shelling out: hg --debug --encoding utf8 -R '/repos/test/' log -C --style '/root/src/redmine/lib/redmine/scm/adapters/mercurial/hg-template-1.0.tmpl' -r 0:4 Changeset Load (0.4ms) SELECT "changesets".id FROM "changesets" WHERE ("changesets"."revision" = '' AND "changesets".repository_id = 6) LIMIT 1
It seems that Shelling out: hg -R '/repos/test/' root
doesn't work correctly as under ruby mri the next command is Shelling out: hg --debug --encoding utf8 -R '/repos/test/' log -C --style
but under jruby it is Shelling out: hg -R '/repos/test/' --cwd '/repos/test/' locate -r tip
When I try to access the reposity under jruby after it worked under ruby mri I can see the repository and new files added to it but I don't see any new revisions.
Here is the environment for jruby:
# gem environment RubyGems Environment: - RUBYGEMS VERSION: 1.3.5 - RUBY VERSION: 1.8.7 (2009-11-02 patchlevel 174) [java] - INSTALLATION DIRECTORY: /opt/jruby-1.4.0/lib/ruby/gems/1.8 - RUBY EXECUTABLE: /opt/jruby/bin/jruby - EXECUTABLE DIRECTORY: /opt/jruby/bin - RUBYGEMS PLATFORMS: - ruby - universal-java-1.6 - GEM PATHS: - /opt/jruby-1.4.0/lib/ruby/gems/1.8 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - "install" => "--env-shebang" - "update" => "--env-shebang" - REMOTE SOURCES: - http://gems.rubyforge.org/
and the environment under ruby mri
# gem1.8 environment RubyGems Environment: - RUBYGEMS VERSION: 1.3.5 - RUBY VERSION: 1.8.7 (2009-06-12 patchlevel 174) [i486-linux] - INSTALLATION DIRECTORY: /var/lib/gems/1.8 - RUBY EXECUTABLE: /usr/bin/ruby1.8 - EXECUTABLE DIRECTORY: /var/lib/gems/1.8/bin - RUBYGEMS PLATFORMS: - ruby - x86-linux - GEM PATHS: - /var/lib/gems/1.8 - /root/.gem/ruby/1.8 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - REMOTE SOURCES: - http://gems.rubyforge.org/
The Redmine revision I'm currently using is r3255.
I tried to use subversion and bazaar and both worked without problems under jruby
Files
Related issues