]> source.dussan.org Git - redmine.git/commitdiff
scm: cvs: convert author encoding with log encoding setting.
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Thu, 14 Apr 2011 15:39:00 +0000 (15:39 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Thu, 14 Apr 2011 15:39:00 +0000 (15:39 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5456 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/repository/cvs.rb
lib/redmine/scm/adapters/cvs_adapter.rb
test/unit/lib/redmine/scm/adapters/cvs_adapter_test.rb

index a0202f19b99e2de92c4fed65d5d497205074ca6e..d95b5f12dd211f1039f877a571168ac6159986ce 100644 (file)
@@ -128,7 +128,7 @@ class Repository::Cvs < Repository
     fetch_since = latest_changeset ? latest_changeset.committed_on : nil
     transaction do
       tmp_rev_num = 1
-      scm.revisions('', fetch_since, nil, :with_paths => true) do |revision|
+      scm.revisions('', fetch_since, nil, :log_encoding => repo_log_encoding) do |revision|
         # only add the change to the database, if it doen't exists. the cvs log
         # is not exclusive at all. 
         tmp_time = revision.time.clone
index 059f5cecf42e74057a72f87c805bb205b612b7cc..06ab1555f749627d47c97bab436fb7e2201051a8 100644 (file)
@@ -239,9 +239,10 @@ module Redmine
                   revision = $1
                 elsif /^date:\s+(\d+.\d+.\d+\s+\d+:\d+:\d+)/ =~ line
                   date       = Time.parse($1)
-                  # TODO: This regexp fails in some non UTF-8 chars on Ruby 1.8.
-                  author     = /author: ([^;]+)/.match(line)[1]
-                  file_state = /state: ([^;]+)/.match(line)[1]
+                  line_utf8    = scm_iconv('UTF-8', options[:log_encoding], line)
+                  author_utf8  = /author: ([^;]+)/.match(line_utf8)[1]
+                  author       = scm_iconv(options[:log_encoding], 'UTF-8', author_utf8)
+                  file_state   = /state: ([^;]+)/.match(line)[1]
                   # TODO:
                   #    linechanges only available in CVS....
                   #    maybe a feature our SVN implementation.
index 20be70802531e92eb469a35b8e1915e8e43058a2..455d2b45a59ce02b9d3c8acaee25810670a035f4 100644 (file)
@@ -24,7 +24,7 @@ begin
 
       def test_revisions_all
         cnt = 0
-        @adapter.revisions('', nil, nil, :with_paths => true) do |revision|
+        @adapter.revisions('', nil, nil, :log_encoding => 'UTF-8') do |revision|
           cnt += 1
         end
         assert_equal 16, cnt
@@ -33,7 +33,7 @@ begin
       def test_revisions_from_rev3
         rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22)
         cnt = 0
-        @adapter.revisions('', rev3_committed_on, nil, :with_paths => true) do |revision|
+        @adapter.revisions('', rev3_committed_on, nil, :log_encoding => 'UTF-8') do |revision|
           cnt += 1
         end
         assert_equal 4, cnt