Mercurial > hg > soundsoftware-site
diff app/models/repository/git.rb @ 245:051f544170fe
* Update to SVN trunk revision 4993
author | Chris Cannam |
---|---|
date | Thu, 03 Mar 2011 11:42:28 +0000 |
parents | 8661b858af72 |
children | eeebe205a056 cbce1fd3b1b7 |
line wrap: on
line diff
--- a/app/models/repository/git.rb Thu Mar 03 11:40:10 2011 +0000 +++ b/app/models/repository/git.rb Thu Mar 03 11:42:28 2011 +0000 @@ -21,14 +21,25 @@ attr_protected :root_url validates_presence_of :url - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "Path to repository", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::GitAdapter end - + def self.scm_name 'Git' end + def repo_log_encoding + 'UTF-8' + end + # Returns the identifier for the given git changeset def self.changeset_identifier(changeset) changeset.scmid @@ -47,6 +58,13 @@ 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 @@ -72,7 +90,28 @@ revisions.reject!{|r| recent_revisions.include?(r.scmid)} # Save the remaining ones to the database - revisions.each{|r| r.save(self)} unless revisions.nil? + unless revisions.nil? + revisions.each do |rev| + transaction do + changeset = Changeset.new( + :repository => self, + :revision => rev.identifier, + :scmid => rev.scmid, + :committer => rev.author, + :committed_on => rev.time, + :comments => rev.message) + + if changeset.save + rev.paths.each do |file| + Change.create( + :changeset => changeset, + :action => file[:action], + :path => file[:path]) + end + end + end + end + end end def latest_changesets(path,rev,limit=10)