summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2008-12-27 18:33:35 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2008-12-27 18:33:35 +0000
commita7a4c9f848783e51a5e7cee7d374879443cfb2be (patch)
treee7989ee108ec3f0585dbdbdfe3e858adee25416f
parent76a9101998f85b543a26edaa7ed5be1b2b54a562 (diff)
downloadredmine-a7a4c9f848783e51a5e7cee7d374879443cfb2be.tar.gz
redmine-a7a4c9f848783e51a5e7cee7d374879443cfb2be.zip
Fixed: deleted files should not be shown when browsing a Darcs repository (#2385).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2189 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--lib/redmine/scm/adapters/darcs_adapter.rb13
-rw-r--r--test/unit/repository_darcs_test.rb6
2 files changed, 16 insertions, 3 deletions
diff --git a/lib/redmine/scm/adapters/darcs_adapter.rb b/lib/redmine/scm/adapters/darcs_adapter.rb
index 4a5183f79..658f06055 100644
--- a/lib/redmine/scm/adapters/darcs_adapter.rb
+++ b/lib/redmine/scm/adapters/darcs_adapter.rb
@@ -84,7 +84,7 @@ module Redmine
end
end
return nil if $? && $?.exitstatus != 0
- entries.sort_by_name
+ entries.compact.sort_by_name
end
def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={})
@@ -148,15 +148,22 @@ module Redmine
end
private
-
+
+ # Returns an Entry from the given XML element
+ # or nil if the entry was deleted
def entry_from_xml(element, path_prefix)
+ modified_element = element.elements['modified']
+ if modified_element.elements['modified_how'].text.match(/removed/)
+ return nil
+ end
+
Entry.new({:name => element.attributes['name'],
:path => path_prefix + element.attributes['name'],
:kind => element.name == 'file' ? 'file' : 'dir',
:size => nil,
:lastrev => Revision.new({
:identifier => nil,
- :scmid => element.elements['modified'].elements['patch'].attributes['hash']
+ :scmid => modified_element.elements['patch'].attributes['hash']
})
})
end
diff --git a/test/unit/repository_darcs_test.rb b/test/unit/repository_darcs_test.rb
index ca8c267f2..0c8c9a143 100644
--- a/test/unit/repository_darcs_test.rb
+++ b/test/unit/repository_darcs_test.rb
@@ -49,6 +49,12 @@ class RepositoryDarcsTest < Test::Unit::TestCase
assert_equal 6, @repository.changesets.count
end
+ def test_deleted_files_should_not_be_listed
+ entries = @repository.entries('sources')
+ assert entries.detect {|e| e.name == 'watchers_controller.rb'}
+ assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'}
+ end
+
def test_cat
@repository.fetch_changesets
cat = @repository.cat("sources/welcome_controller.rb", 2)