]> source.dussan.org Git - redmine.git/commitdiff
scm: Ruby 1.9 compatibility for XML UTF-8 parsing.
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Thu, 3 Mar 2011 05:51:46 +0000 (05:51 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Thu, 3 Mar 2011 05:51:46 +0000 (05:51 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4993 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/scm/adapters/mercurial_adapter.rb
lib/redmine/scm/adapters/subversion_adapter.rb

index a0f1db19518c7631fe1e047e9e685676c85baa1c..1f9153faba8272ba8f154ce3131ae967e25948fb 100644 (file)
@@ -120,8 +120,12 @@ module Redmine
         def summary
           return @summary if @summary 
           hg 'rhsummary' do |io|
+            output = io.read
+            if output.respond_to?(:force_encoding)
+              output.force_encoding('UTF-8')
+            end
             begin
-              @summary = ActiveSupport::XmlMini.parse(io.read)['rhsummary']
+              @summary = ActiveSupport::XmlMini.parse(output)['rhsummary']
             rescue
             end
           end
@@ -132,8 +136,12 @@ module Redmine
           p1 = scm_iconv(@path_encoding, 'UTF-8', path)
           manifest = hg('rhmanifest', '-r', CGI.escape(hgrev(identifier)),
                         CGI.escape(without_leading_slash(p1.to_s))) do |io|
+            output = io.read
+            if output.respond_to?(:force_encoding)
+              output.force_encoding('UTF-8')
+            end
             begin
-              ActiveSupport::XmlMini.parse(io.read)['rhmanifest']['repository']['manifest']
+              ActiveSupport::XmlMini.parse(output)['rhmanifest']['repository']['manifest']
             rescue
             end
           end
@@ -175,9 +183,13 @@ module Redmine
           hg_args << '--limit' << options[:limit] if options[:limit]
           hg_args << hgtarget(path) unless path.blank?
           log = hg(*hg_args) do |io|
+            output = io.read
+            if output.respond_to?(:force_encoding)
+              output.force_encoding('UTF-8')
+            end
             begin
               # Mercurial < 1.5 does not support footer template for '</log>'
-              ActiveSupport::XmlMini.parse("#{io.read}</log>")['log']
+              ActiveSupport::XmlMini.parse("#{output}</log>")['log']
             rescue
             end
           end
index 1fad6e3fa4e55f130d8439d8c319924210648c38..59f577e6433fc16afaaef39795fc5b9041809ef1 100644 (file)
@@ -65,6 +65,9 @@ module Redmine
           info = nil\r
           shellout(cmd) do |io|\r
             output = io.read\r
+            if output.respond_to?(:force_encoding)\r
+              output.force_encoding('UTF-8')\r
+            end\r
             begin\r
               doc = ActiveSupport::XmlMini.parse(output)\r
               #root_url = doc.elements["info/entry/repository/root"].text          \r
@@ -94,6 +97,9 @@ module Redmine
           cmd << credentials_string\r
           shellout(cmd) do |io|\r
             output = io.read\r
+            if output.respond_to?(:force_encoding)\r
+              output.force_encoding('UTF-8')\r
+            end\r
             begin\r
               doc = ActiveSupport::XmlMini.parse(output)\r
               each_xml_element(doc['lists']['list'], 'entry') do |entry|\r
@@ -134,6 +140,9 @@ module Redmine
           properties = {}\r
           shellout(cmd) do |io|\r
             output = io.read\r
+            if output.respond_to?(:force_encoding)\r
+              output.force_encoding('UTF-8')\r
+            end\r
             begin\r
               doc = ActiveSupport::XmlMini.parse(output)\r
               each_xml_element(doc['properties']['target'], 'property') do |property|\r
@@ -158,6 +167,9 @@ module Redmine
           cmd << ' ' + target(path)\r
           shellout(cmd) do |io|\r
             output = io.read\r
+            if output.respond_to?(:force_encoding)\r
+              output.force_encoding('UTF-8')\r
+            end\r
             begin\r
               doc = ActiveSupport::XmlMini.parse(output)\r
               each_xml_element(doc['log'], 'logentry') do |logentry|\r