From: Toshi MARUYAMA Date: Wed, 16 Feb 2011 11:16:53 +0000 (+0000) Subject: scm: git: implement find_changeset_by_name (#7047). X-Git-Tag: 1.2.0~970 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=724afdf49d0c1875af06ad5137608a58446882c2;p=redmine.git scm: git: implement find_changeset_by_name (#7047). SQL "like" is slow. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4851 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/models/repository/git.rb b/app/models/repository/git.rb index 26cb84db9..8fb6325b0 100644 --- a/app/models/repository/git.rb +++ b/app/models/repository/git.rb @@ -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