scm: cvs: convert author encoding with log encoding setting.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5456 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Toshi MARUYAMA 2011-04-14 15:39:00 +00:00
parent bebf8247a7
commit 04a22fa757
3 changed files with 7 additions and 6 deletions

View 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

View 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.

View 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