diff options
author | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2011-01-09 01:30:18 +0000 |
---|---|---|
committer | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2011-01-09 01:30:18 +0000 |
commit | ef28bf6d88f66e2a61bb14169671cc8fbb8086e0 (patch) | |
tree | 4e7e182646ec4e1a3f7cb79f76a383f5656185f8 /lib/redmine/scm/adapters | |
parent | 5207211b6d02dd36a8aa3e691d125a03137cdf2e (diff) | |
download | redmine-ef28bf6d88f66e2a61bb14169671cc8fbb8086e0.tar.gz redmine-ef28bf6d88f66e2a61bb14169671cc8fbb8086e0.zip |
scm: mercurial: annotate accepts both of revision number and changeset id (#3724).
Change annotate revision label to Mercurial style '4:def6d2f1254a'
and use identifier.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4663 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'lib/redmine/scm/adapters')
-rw-r--r-- | lib/redmine/scm/adapters/mercurial_adapter.rb | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/redmine/scm/adapters/mercurial_adapter.rb b/lib/redmine/scm/adapters/mercurial_adapter.rb index 7607dd1ca..a493a94ee 100644 --- a/lib/redmine/scm/adapters/mercurial_adapter.rb +++ b/lib/redmine/scm/adapters/mercurial_adapter.rb @@ -183,25 +183,33 @@ module Redmine return nil if $? && $?.exitstatus != 0 cat end - + def annotate(path, identifier=nil) path ||= '' cmd = "#{HG_BIN} -R #{target('')}" - cmd << " annotate -n -u" - cmd << " -r " + shell_quote(identifier ? identifier.to_s : "tip") - cmd << " -r #{identifier.to_i}" if identifier + cmd << " annotate -ncu" + cmd << " -r #{hgrev(identifier)}" cmd << " #{target(path)}" blame = Annotate.new shellout(cmd) do |io| io.each_line do |line| - next unless line =~ %r{^([^:]+)\s(\d+):(.*)$} - blame.add_line($3.rstrip, Revision.new(:identifier => $2.to_i, :author => $1.strip)) + next unless line =~ %r{^([^:]+)\s(\d+)\s([0-9a-f]+):\s(.*)$} + r = Revision.new(:author => $1.strip, :revision => $2, :scmid => $3, + :identifier => $3) + blame.add_line($4.rstrip, r) end end return nil if $? && $?.exitstatus != 0 blame end + class Revision < Redmine::Scm::Adapters::Revision + # Returns the readable identifier + def format_identifier + "#{revision}:#{scmid}" + end + end + # Returns correct revision identifier def hgrev(identifier) identifier.blank? ? 'tip' : identifier.to_s |