]> source.dussan.org Git - redmine.git/commitdiff
scm: mercurial: split Repository::Mercurial#latest_changesets_cond for short and...
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Sat, 1 Feb 2014 07:46:45 +0000 (07:46 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Sat, 1 Feb 2014 07:46:45 +0000 (07:46 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@12751 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/repository/mercurial.rb

index dcd07dad5811766c24fbd965b31fe719b2a9da87..5eedbb7eb64da28d9267e9e3467be2bf94698aac 100644 (file)
@@ -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