scm: mercurial: annotate path encoding support in adapter (#2664).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4931 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Toshi MARUYAMA 2011-02-23 07:04:32 +00:00
parent 494c2b5007
commit f8da0127f7
1 changed files with 3 additions and 1 deletions

View File

@ -238,9 +238,11 @@ module Redmine
end end
def annotate(path, identifier=nil) def annotate(path, identifier=nil)
p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path))
blame = Annotate.new blame = Annotate.new
hg 'annotate', '-ncu', '-r', hgrev(identifier), hgtarget(path) do |io| hg 'rhannotate', '-ncu', '-r', hgrev(identifier), hgtarget(p) do |io|
io.each_line do |line| io.each_line do |line|
line.force_encoding('ASCII-8BIT') if line.respond_to?(:force_encoding)
next unless line =~ %r{^([^:]+)\s(\d+)\s([0-9a-f]+):\s(.*)$} next unless line =~ %r{^([^:]+)\s(\d+)\s([0-9a-f]+):\s(.*)$}
r = Revision.new(:author => $1.strip, :revision => $2, :scmid => $3, r = Revision.new(:author => $1.strip, :revision => $2, :scmid => $3,
:identifier => $3) :identifier => $3)