summaryrefslogtreecommitdiffstats
path: root/lib/redmine/scm
diff options
context:
space:
mode:
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>2012-09-17 23:46:53 +0000
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>2012-09-17 23:46:53 +0000
commita701bd5fbd3400e3bfe54973d949c853666c3648 (patch)
treeef2f2c31dd19d1cb78c70bea5c2a30bde066cf14 /lib/redmine/scm
parenta3ae06921d577fde730421fb8c83de02f535e60f (diff)
downloadredmine-a701bd5fbd3400e3bfe54973d949c853666c3648.tar.gz
redmine-a701bd5fbd3400e3bfe54973d949c853666c3648.zip
scm: bazaar: convert path encoding from @path_encoding to UTF-8 at adapter entries method (#11834)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10418 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'lib/redmine/scm')
-rw-r--r--lib/redmine/scm/adapters/bazaar_adapter.rb12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/redmine/scm/adapters/bazaar_adapter.rb b/lib/redmine/scm/adapters/bazaar_adapter.rb
index 976e68787..7f04cda83 100644
--- a/lib/redmine/scm/adapters/bazaar_adapter.rb
+++ b/lib/redmine/scm/adapters/bazaar_adapter.rb
@@ -91,13 +91,17 @@ module Redmine
cmd_args << "-r#{identifier.to_i}"
cmd_args << bzr_target(path)
scm_cmd(*cmd_args) do |io|
- prefix = "#{url}/#{path}".gsub('\\', '/')
- logger.debug "PREFIX: #{prefix}"
+ prefix_utf8 = "#{url}/#{path}".gsub('\\', '/')
+ logger.debug "PREFIX: #{prefix_utf8}"
+ prefix = scm_iconv(@path_encoding, 'UTF-8', prefix_utf8)
+ prefix.force_encoding('ASCII-8BIT') if prefix.respond_to?(:force_encoding)
re = %r{^V\s+(#{Regexp.escape(prefix)})?(\/?)([^\/]+)(\/?)\s+(\S+)\r?$}
io.each_line do |line|
next unless line =~ re
- entries << Entry.new({:name => $3.strip,
- :path => ((path.empty? ? "" : "#{path}/") + $3.strip),
+ name_locale = $3.strip
+ name = scm_iconv('UTF-8', @path_encoding, name_locale)
+ entries << Entry.new({:name => name,
+ :path => ((path.empty? ? "" : "#{path}/") + name),
:kind => ($4.blank? ? 'file' : 'dir'),
:size => nil,
:lastrev => Revision.new(:revision => $5.strip)