]> source.dussan.org Git - redmine.git/commitdiff
scm: bazaar: convert path encoding from @path_encoding to UTF-8 at adapter entries...
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Mon, 17 Sep 2012 23:46:53 +0000 (23:46 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Mon, 17 Sep 2012 23:46:53 +0000 (23:46 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10418 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/scm/adapters/bazaar_adapter.rb

index 976e68787bffbc6549b3ed2a61f703215d9896d1..7f04cda834338dde4a1d57a7dc00b050ed16d8d5 100644 (file)
@@ -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)