scm: mercurial: log and entries path encoding support in adapter (#2664).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4923 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
d43284ba04
commit
c37f638912
|
@ -129,8 +129,9 @@ module Redmine
|
||||||
private :summary
|
private :summary
|
||||||
|
|
||||||
def entries(path=nil, identifier=nil)
|
def entries(path=nil, identifier=nil)
|
||||||
|
p1 = scm_iconv(@path_encoding, 'UTF-8', path)
|
||||||
manifest = hg('rhmanifest', '-r', hgrev(identifier),
|
manifest = hg('rhmanifest', '-r', hgrev(identifier),
|
||||||
CGI.escape(without_leading_slash(path.to_s))) do |io|
|
CGI.escape(without_leading_slash(p1.to_s))) do |io|
|
||||||
begin
|
begin
|
||||||
ActiveSupport::XmlMini.parse(io.read)['rhmanifest']['repository']['manifest']
|
ActiveSupport::XmlMini.parse(io.read)['rhmanifest']['repository']['manifest']
|
||||||
rescue
|
rescue
|
||||||
|
@ -140,13 +141,13 @@ module Redmine
|
||||||
|
|
||||||
entries = Entries.new
|
entries = Entries.new
|
||||||
as_ary(manifest['dir']).each do |e|
|
as_ary(manifest['dir']).each do |e|
|
||||||
n = CGI.unescape(e['name'])
|
n = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['name']))
|
||||||
p = "#{path_prefix}#{n}"
|
p = "#{path_prefix}#{n}"
|
||||||
entries << Entry.new(:name => n, :path => p, :kind => 'dir')
|
entries << Entry.new(:name => n, :path => p, :kind => 'dir')
|
||||||
end
|
end
|
||||||
|
|
||||||
as_ary(manifest['file']).each do |e|
|
as_ary(manifest['file']).each do |e|
|
||||||
n = CGI.unescape(e['name'])
|
n = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['name']))
|
||||||
p = "#{path_prefix}#{n}"
|
p = "#{path_prefix}#{n}"
|
||||||
lr = Revision.new(:revision => e['revision'], :scmid => e['node'],
|
lr = Revision.new(:revision => e['revision'], :scmid => e['node'],
|
||||||
:identifier => e['node'],
|
:identifier => e['node'],
|
||||||
|
@ -188,7 +189,7 @@ module Redmine
|
||||||
cpmap = Hash[*cpalist.flatten]
|
cpmap = Hash[*cpalist.flatten]
|
||||||
|
|
||||||
paths = as_ary(le['paths']['path']).map do |e|
|
paths = as_ary(le['paths']['path']).map do |e|
|
||||||
p = CGI.unescape(e['__content__'])
|
p = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['__content__']) )
|
||||||
{:action => e['action'], :path => with_leading_slash(p),
|
{:action => e['action'], :path => with_leading_slash(p),
|
||||||
:from_path => (cpmap.member?(p) ? with_leading_slash(cpmap[p]) : nil),
|
:from_path => (cpmap.member?(p) ? with_leading_slash(cpmap[p]) : nil),
|
||||||
:from_revision => (cpmap.member?(p) ? le['revision'] : nil)}
|
:from_revision => (cpmap.member?(p) ? le['revision'] : nil)}
|
||||||
|
@ -211,7 +212,10 @@ module Redmine
|
||||||
else
|
else
|
||||||
hg_args << '-c' << hgrev(identifier_from)
|
hg_args << '-c' << hgrev(identifier_from)
|
||||||
end
|
end
|
||||||
hg_args << CGI.escape(hgtarget(path)) unless path.blank?
|
unless path.blank?
|
||||||
|
p = scm_iconv(@path_encoding, 'UTF-8', path)
|
||||||
|
hg_args << CGI.escape(hgtarget(p))
|
||||||
|
end
|
||||||
diff = []
|
diff = []
|
||||||
hg *hg_args do |io|
|
hg *hg_args do |io|
|
||||||
io.each_line do |line|
|
io.each_line do |line|
|
||||||
|
|
Loading…
Reference in New Issue