From ffb3d9260aa04fbd340652631e5df1d440740181 2010-09-26 21:54:52 From: Eric Davis Date: 2010-09-26 21:54:52 Subject: [PATCH] Support leading and trailing spaces in filenames or directories in the git adapter. #6499 Contributed by Felix Schäfer git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4189 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/lib/redmine/scm/adapters/git_adapter.rb b/lib/redmine/scm/adapters/git_adapter.rb index f455a57..5ed57c2 100644 --- a/lib/redmine/scm/adapters/git_adapter.rb +++ b/lib/redmine/scm/adapters/git_adapter.rb @@ -65,7 +65,7 @@ module Redmine shellout(cmd) do |io| io.each_line do |line| e = line.chomp.to_s - if e =~ /^\d+\s+(\w+)\s+([0-9a-f]{40})\s+([0-9-]+)\s+(.+)$/ + if e =~ /^\d+\s+(\w+)\s+([0-9a-f]{40})\s+([0-9-]+)\t(.+)$/ type = $1 sha = $2 size = $3 @@ -165,13 +165,13 @@ module Redmine parsing_descr = 1 changeset[:description] = "" elsif (parsing_descr == 1 || parsing_descr == 2) \ - && line =~ /^:\d+\s+\d+\s+[0-9a-f.]+\s+[0-9a-f.]+\s+(\w)\s+(.+)$/ + && line =~ /^:\d+\s+\d+\s+[0-9a-f.]+\s+[0-9a-f.]+\s+(\w)\t(.+)$/ parsing_descr = 2 fileaction = $1 filepath = $2 files << {:action => fileaction, :path => filepath} elsif (parsing_descr == 1 || parsing_descr == 2) \ - && line =~ /^:\d+\s+\d+\s+[0-9a-f.]+\s+[0-9a-f.]+\s+(\w)\d+\s+(\S+)\s+(.+)$/ + && line =~ /^:\d+\s+\d+\s+[0-9a-f.]+\s+[0-9a-f.]+\s+(\w)\d+\s+(\S+)\t(.+)$/ parsing_descr = 2 fileaction = $1 filepath = $3 diff --git a/test/fixtures/repositories/git_repository.tar.gz b/test/fixtures/repositories/git_repository.tar.gz index 8a07a230cc9202a7396d5f4ed6e207087ec63d03..17cb22943b34d75268ded8cbbacb66a5cbda3d8b 100644 GIT binary patch literal 20711 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 true).length + assert_equal 15, @adapter.revisions('',nil,nil,:all => true).length end def test_getting_certain_revisions @@ -24,6 +24,14 @@ class GitAdapterTest < ActiveSupport::TestCase assert_equal 1, @adapter.revisions("filemane with spaces.txt", nil, nil, :all => true).length end + def test_getting_revisions_with_leading_and_trailing_spaces_in_filename + assert_equal " filename with a leading space.txt ", @adapter.revisions(" filename with a leading space.txt ", nil, nil, :all => true)[0].paths[0][:path] + end + + def test_getting_entries_with_leading_and_trailing_spaces_in_filename + assert_equal " filename with a leading space.txt ", @adapter.entries('', '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name + end + def test_annotate annotate = @adapter.annotate('sources/watchers_controller.rb') assert_kind_of Redmine::Scm::Adapters::Annotate, annotate diff --git a/test/unit/repository_git_test.rb b/test/unit/repository_git_test.rb index 4f60875..5ae8894 100644 --- a/test/unit/repository_git_test.rb +++ b/test/unit/repository_git_test.rb @@ -34,8 +34,8 @@ class RepositoryGitTest < ActiveSupport::TestCase @repository.fetch_changesets @repository.reload - assert_equal 14, @repository.changesets.count - assert_equal 23, @repository.changes.count + assert_equal 15, @repository.changesets.count + assert_equal 24, @repository.changes.count commit = @repository.changesets.find(:first, :order => 'committed_on ASC') assert_equal "Initial import.\nThe repository contains 3 files.", commit.comments @@ -57,10 +57,10 @@ class RepositoryGitTest < ActiveSupport::TestCase # Remove the 3 latest changesets @repository.changesets.find(:all, :order => 'committed_on DESC', :limit => 3).each(&:destroy) @repository.reload - assert_equal 11, @repository.changesets.count + assert_equal 12, @repository.changesets.count @repository.fetch_changesets - assert_equal 14, @repository.changesets.count + assert_equal 15, @repository.changesets.count end else puts "Git test repository NOT FOUND. Skipping unit tests !!!"