summaryrefslogtreecommitdiffstats
path: root/app/models/repository
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2012-06-10 18:32:48 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2012-06-10 18:32:48 +0000
commit8a491dbae94b8fbb4ca4241cba7650c81380e98e (patch)
tree8e101ad72dd82a614a6e17151c9fd76d2a9fccf2 /app/models/repository
parent7c105ec9e93b73f5c11f2d5cc240e2b15344ec98 (diff)
downloadredmine-8a491dbae94b8fbb4ca4241cba7650c81380e98e.tar.gz
redmine-8a491dbae94b8fbb4ca4241cba7650c81380e98e.zip
Faster changesets loading for subversion.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9806 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/repository')
-rw-r--r--app/models/repository/subversion.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/app/models/repository/subversion.rb b/app/models/repository/subversion.rb
index 55dfb44f0..98c5bc108 100644
--- a/app/models/repository/subversion.rb
+++ b/app/models/repository/subversion.rb
@@ -81,6 +81,22 @@ class Repository::Subversion < Repository
end
end
+ protected
+
+ def load_entries_changesets(entries)
+ entries_with_identifier = entries.select {|entry| entry.lastrev && entry.lastrev.identifier.present?}
+ identifiers = entries_with_identifier.map {|entry| entry.lastrev.identifier}.compact.uniq
+
+ if identifiers.any?
+ changesets_by_identifier = changesets.where(:revision => identifiers).includes(:user, :repository).all.group_by(&:revision)
+ entries_with_identifier.each do |entry|
+ if m = changesets_by_identifier[entry.lastrev.identifier]
+ entry.changeset = m.first
+ end
+ end
+ end
+ end
+
private
# Returns the relative url of the repository