]> source.dussan.org Git - redmine.git/commitdiff
Fixed: deleted files should not be shown when browsing a Darcs repository (#2385).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 27 Dec 2008 18:33:35 +0000 (18:33 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 27 Dec 2008 18:33:35 +0000 (18:33 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2189 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/scm/adapters/darcs_adapter.rb
test/unit/repository_darcs_test.rb

index 4a5183f79ccdb15ed0cff7205aadefaa691e50fe..658f0605559213ae09452e14252e74dd7b749bf2 100644 (file)
@@ -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
index ca8c267f251a70cae195112d30ec8f1df2540c85..0c8c9a1439d4d069dd73103ec41b542f620e46ce 100644 (file)
@@ -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)