diff options
author | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2011-02-18 05:55:02 +0000 |
---|---|---|
committer | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2011-02-18 05:55:02 +0000 |
commit | b3c517387a74fc3f228a3f5d6937e72e0a072c3d (patch) | |
tree | fa30efcbf836df5c6f050059c08a335ff0a0b3f3 /app | |
parent | d393306a0cf68a2a12b814f861cc72a3d0c95a1c (diff) | |
download | redmine-b3c517387a74fc3f228a3f5d6937e72e0a072c3d.tar.gz redmine-b3c517387a74fc3f228a3f5d6937e72e0a072c3d.zip |
scm: mercurial: improvement latest_changesets without supporting tags and named branches (#4455).
Based on latest-changesets-improvements-2.diff of #6159.
http://www.redmine.org/attachments/4332/latest-changesets-improvements-2.diff
Contributed by Yuya Nishihara.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4868 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r-- | app/models/repository/mercurial.rb | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/app/models/repository/mercurial.rb b/app/models/repository/mercurial.rb index 4ee76f442..d7f58fcd1 100644 --- a/app/models/repository/mercurial.rb +++ b/app/models/repository/mercurial.rb @@ -61,14 +61,17 @@ class Repository::Mercurial < Repository end # Returns the latest changesets for +path+; sorted by revision number + # Default behavior is to search in cached changesets def latest_changesets(path, rev, limit=10) if path.blank? changesets.find(:all, :include => :user, :limit => limit) else - changes.find(:all, :include => {:changeset => :user}, - :conditions => ["path = ?", path.with_leading_slash], - :order => "#{Changeset.table_name}.id DESC", - :limit => limit).collect(&:changeset) + changesets.find(:all, :select => "DISTINCT #{Changeset.table_name}.*", + :joins => :changes, + :conditions => ["#{Change.table_name}.path = ? OR #{Change.table_name}.path LIKE ? ESCAPE ?", + path.with_leading_slash, + "#{path.with_leading_slash.gsub(/[%_\\]/) { |s| "\\#{s}" }}/%", '\\'], + :include => :user, :limit => limit) end end |