]> source.dussan.org Git - redmine.git/commitdiff
scm: git: implement find_changeset_by_name (#7047).
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Wed, 16 Feb 2011 11:16:53 +0000 (11:16 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Wed, 16 Feb 2011 11:16:53 +0000 (11:16 +0000)
SQL "like" is slow.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4851 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/repository/git.rb

index 26cb84db9c7e8fde677ad88b50a16791f432a711..8fb6325b0be287dae87e5c95fb5fd658064d829f 100644 (file)
@@ -47,6 +47,13 @@ class Repository::Git < Repository
     scm.tags
   end
 
+  def find_changeset_by_name(name)
+    return nil if name.nil? || name.empty?
+    e = changesets.find(:first, :conditions => ['revision = ?', name.to_s])
+    return e if e
+    changesets.find(:first, :conditions => ['scmid LIKE ?', "#{name}%"])
+  end
+
   # With SCM's that have a sequential commit numbering, redmine is able to be
   # clever and only fetch changesets going forward from the most recent one
   # it knows about.  However, with git, you never know if people have merged