From 6ea2b7a43b7e5e55ff549285db5c6764cf530f8b Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Sat, 1 Feb 2014 07:46:45 +0000 Subject: [PATCH] scm: mercurial: split Repository::Mercurial#latest_changesets_cond for short and long id (#14361) git-svn-id: http://svn.redmine.org/redmine/trunk@12751 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/repository/mercurial.rb | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/app/models/repository/mercurial.rb b/app/models/repository/mercurial.rb index dcd07dad5..5eedbb7eb 100644 --- a/app/models/repository/mercurial.rb +++ b/app/models/repository/mercurial.rb @@ -100,6 +100,17 @@ class Repository::Mercurial < Repository all end + def nodes_in_branch(rev, branch_limit) + scm.nodes_in_branch(rev, :limit => branch_limit).collect do |b| + b[0, 12] + end + end + + def tag_scmid(rev) + scmid = scm.tagmap[rev] + scmid.nil? ? nil : scmid[0, 12] + end + def latest_changesets_cond(path, rev, limit) cond, args = [], [] if scm.branchmap.member? rev @@ -114,8 +125,8 @@ class Repository::Mercurial < Repository # Mercurial does not treat direcotry. # So, "hg log DIR" is very heavy. branch_limit = path.blank? ? limit : ( limit * 5 ) - args << scm.nodes_in_branch(rev, :limit => branch_limit) - elsif last = rev ? find_changeset_by_name(scm.tagmap[rev] || rev) : nil + args << nodes_in_branch(rev, branch_limit) + elsif last = rev ? find_changeset_by_name(tag_scmid(rev) || rev) : nil cond << "#{Changeset.table_name}.id <= ?" args << last.id end