]> source.dussan.org Git - redmine.git/commitdiff
SubversionAdapter#entries performance improvement.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 18 Nov 2008 18:36:47 +0000 (18:36 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 18 Nov 2008 18:36:47 +0000 (18:36 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2045 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/scm/adapters/subversion_adapter.rb

index dff225e44d3d2444db5a920cce2f789b13dc78c5..0a96ed654276d17151c8e1fdf55835a4a6486c72 100644 (file)
@@ -84,17 +84,20 @@ module Redmine
             begin\r
               doc = REXML::Document.new(output)\r
               doc.elements.each("lists/list/entry") do |entry|\r
+                commit = entry.elements['commit']\r
+                commit_date = commit.elements['date']\r
                 # Skip directory if there is no commit date (usually that\r
                 # means that we don't have read access to it)\r
-                next if entry.attributes['kind'] == 'dir' && entry.elements['commit'].elements['date'].nil?\r
-                entries << Entry.new({:name => URI.unescape(entry.elements['name'].text),\r
-                            :path => ((path.empty? ? "" : "#{path}/") + entry.elements['name'].text),\r
+                next if entry.attributes['kind'] == 'dir' && commit_date.nil?\r
+                name = entry.elements['name'].text\r
+                entries << Entry.new({:name => URI.unescape(name),\r
+                            :path => ((path.empty? ? "" : "#{path}/") + name),\r
                             :kind => entry.attributes['kind'],\r
-                            :size => (entry.elements['size'] and entry.elements['size'].text).to_i,\r
+                            :size => ((s = entry.elements['size']) ? s.text.to_i : nil),\r
                             :lastrev => Revision.new({\r
-                              :identifier => entry.elements['commit'].attributes['revision'],\r
-                              :time => Time.parse(entry.elements['commit'].elements['date'].text).localtime,\r
-                              :author => (entry.elements['commit'].elements['author'] ? entry.elements['commit'].elements['author'].text : "")\r
+                              :identifier => commit.attributes['revision'],\r
+                              :time => Time.parse(commit_date.text).localtime,\r
+                              :author => ((a = commit.elements['author']) ? a.text : nil)\r
                               })\r
                             })\r
               end\r