summaryrefslogtreecommitdiffstats
path: root/lib/redmine/scm
diff options
context:
space:
mode:
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>2011-01-09 01:30:18 +0000
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>2011-01-09 01:30:18 +0000
commitef28bf6d88f66e2a61bb14169671cc8fbb8086e0 (patch)
tree4e7e182646ec4e1a3f7cb79f76a383f5656185f8 /lib/redmine/scm
parent5207211b6d02dd36a8aa3e691d125a03137cdf2e (diff)
downloadredmine-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')
-rw-r--r--lib/redmine/scm/adapters/mercurial_adapter.rb20
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