Chris@14: --- lib/redmine/scm/adapters/mercurial_adapter.rb Chris@14: +++ lib/redmine/scm/adapters/mercurial_adapter.rb Chris@14: @@ -67,19 +67,17 @@ Chris@14: end Chris@14: Chris@14: def info Chris@14: - cmd = "#{HG_BIN} -R #{target('')} root" Chris@14: - root_url = nil Chris@14: - shellout(cmd) do |io| Chris@14: - root_url = io.gets Chris@14: - end Chris@14: - return nil if $? && $?.exitstatus != 0 Chris@14: - info = Info.new({:root_url => root_url.chomp, Chris@14: - :lastrev => revisions(nil,nil,nil,{:limit => 1}).last Chris@14: - }) Chris@14: - info Chris@14: - rescue CommandFailed Chris@14: - return nil Chris@14: + tip = summary['tip'].first Chris@14: + Info.new(:root_url => summary['root'].first['path'], Chris@14: + :lastrev => Revision.new(:identifier => tip['rev'].to_i, Chris@14: + :revision => tip['rev'], Chris@14: + :scmid => tip['node'])) Chris@14: end Chris@14: + Chris@14: + def summary Chris@14: + @summary ||= fetchg 'rhsummary' Chris@14: + end Chris@14: + private :summary Chris@14: Chris@14: def entries(path=nil, identifier=nil) Chris@14: path ||= '' Chris@14: --- lib/redmine/scm/adapters/mercurial_adapter.rb Chris@14: +++ lib/redmine/scm/adapters/mercurial_adapter.rb Chris@14: @@ -74,6 +74,16 @@ Chris@14: :scmid => tip['node'])) Chris@14: end Chris@14: Chris@14: + def tags Chris@14: + summary['tags'].map { |e| e['name'] } Chris@14: + end Chris@14: + Chris@14: + # Returns map of {'tag' => 'nodeid', ...} Chris@14: + def tagmap Chris@14: + alist = summary['tags'].map { |e| e.values_at('name', 'node') } Chris@14: + Hash[*alist.flatten] Chris@14: + end Chris@14: + Chris@14: def summary Chris@14: @summary ||= fetchg 'rhsummary' Chris@14: end Chris@14: --- lib/redmine/scm/adapters/mercurial_adapter.rb Chris@14: +++ lib/redmine/scm/adapters/mercurial_adapter.rb Chris@14: @@ -84,6 +84,19 @@ Chris@14: Hash[*alist.flatten] Chris@14: end Chris@14: Chris@14: + def branches Chris@14: + summary['branches'].map { |e| e['name'] } Chris@14: + end Chris@14: + Chris@14: + # Returns map of {'branch' => 'nodeid', ...} Chris@14: + def branchmap Chris@14: + alist = summary['branches'].map { |e| e.values_at('name', 'node') } Chris@14: + Hash[*alist.flatten] Chris@14: + end Chris@14: + Chris@14: + # NOTE: DO NOT IMPLEMENT default_branch !! Chris@14: + # It's used as the default revision by RepositoriesController. Chris@14: + Chris@14: def summary Chris@14: @summary ||= fetchg 'rhsummary' Chris@14: end