diff --git a/lib/redmine/scm/adapters/darcs_adapter.rb b/lib/redmine/scm/adapters/darcs_adapter.rb index 4a5183f79ccdb15ed0cff7205aadefaa691e50fe..658f0605559213ae09452e14252e74dd7b749bf2 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 ca8c267f251a70cae195112d30ec8f1df2540c85..0c8c9a1439d4d069dd73103ec41b542f620e46ce 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)