]> source.dussan.org Git - redmine.git/commitdiff
scm: add scm command and version methods at repository models (#4273).
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Mon, 14 Feb 2011 08:45:34 +0000 (08:45 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Mon, 14 Feb 2011 08:45:34 +0000 (08:45 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4822 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/repository.rb
app/models/repository/bazaar.rb
app/models/repository/cvs.rb
app/models/repository/darcs.rb
app/models/repository/filesystem.rb
app/models/repository/git.rb
app/models/repository/mercurial.rb
app/models/repository/subversion.rb

index 3d463b82fac18873717d38c239f7fb0a59f38765..1fbcf5f56dd32427cdf26dedeac5ea0f3b068293 100644 (file)
@@ -37,6 +37,10 @@ class Repository < ActiveRecord::Base
     write_attribute(:root_url, arg ? arg.to_s.strip : nil)
   end
 
+  def scm_adapter
+    self.class.scm_adapter_class
+  end
+
   def scm
     @scm ||= self.scm_adapter.new url, root_url, login, password
     update_attribute(:root_url, @scm.root_url) if root_url.blank?
@@ -46,7 +50,7 @@ class Repository < ActiveRecord::Base
   def scm_name
     self.class.scm_name
   end
-  
+
   def supports_cat?
     scm.supports_cat?
   end
@@ -204,7 +208,23 @@ class Repository < ActiveRecord::Base
   rescue
     nil
   end
-  
+
+  def self.scm_adapter_class
+    nil
+  end
+
+  def self.scm_command
+    self.scm_adapter_class.nil? ? "" : self.scm_adapter_class.client_command
+  end
+
+  def self.scm_version_string
+    self.scm_adapter_class.nil? ? "" : self.scm_adapter_class.client_version_string
+  end
+
+  def self.scm_available
+    self.scm_adapter_class.nil? ? false : self.scm_adapter_class.client_available
+  end
+
   private
   
   def before_save
index ec953bd45420605fa5fb9d951503bdc7956bbd1d..9d7977e7e2663b0a995e54246c0f0f5988dc172e 100644 (file)
@@ -21,14 +21,14 @@ class Repository::Bazaar < Repository
   attr_protected :root_url
   validates_presence_of :url
 
-  def scm_adapter
+  def self.scm_adapter_class
     Redmine::Scm::Adapters::BazaarAdapter
   end
-  
+
   def self.scm_name
     'Bazaar'
   end
-  
+
   def entries(path=nil, identifier=nil)
     entries = scm.entries(path, identifier)
     if entries
index dbbb4694f28d170ab72a1cfabdfa92f1b9edbcd4..c0cac5cdc980f9a78e5dc6cba7977474a0134724 100644 (file)
@@ -21,14 +21,14 @@ require 'digest/sha1'
 class Repository::Cvs < Repository
   validates_presence_of :url, :root_url
 
-  def scm_adapter
+  def self.scm_adapter_class
     Redmine::Scm::Adapters::CvsAdapter
   end
-  
+
   def self.scm_name
     'CVS'
   end
-  
+
   def entry(path=nil, identifier=nil)
     rev = identifier.nil? ? nil : changesets.find_by_revision(identifier)
     scm.entry(path, rev.nil? ? nil : rev.committed_on)
index 43fb029468e3347871a241b57b19e6518035c30e..dc3f0cee070cdbb2110a333eed81ef3d1eeff396 100644 (file)
@@ -20,14 +20,14 @@ require 'redmine/scm/adapters/darcs_adapter'
 class Repository::Darcs < Repository
   validates_presence_of :url
 
-  def scm_adapter
+  def self.scm_adapter_class
     Redmine::Scm::Adapters::DarcsAdapter
   end
-  
+
   def self.scm_name
     'Darcs'
   end
-  
+
   def entry(path=nil, identifier=nil)
     patch = identifier.nil? ? nil : changesets.find_by_revision(identifier)
     scm.entry(path, patch.nil? ? nil : patch.scmid)
index da096cc0996cb1ce64b8f99af6fedbe4238d669e..4be6b528932cb9ea18fa0f64d4ed1ca005c77a73 100644 (file)
@@ -24,14 +24,14 @@ class Repository::Filesystem < Repository
   attr_protected :root_url
   validates_presence_of :url
 
-  def scm_adapter
+  def self.scm_adapter_class
     Redmine::Scm::Adapters::FilesystemAdapter
   end
-  
+
   def self.scm_name
     'Filesystem'
   end
-  
+
   def entries(path=nil, identifier=nil)
     scm.entries(path, identifier)
   end
index 9349f3c113abaebf9b8951bcf1b11acb6633ddba..26cb84db9c7e8fde677ad88b50a16791f432a711 100644 (file)
@@ -21,10 +21,10 @@ class Repository::Git < Repository
   attr_protected :root_url
   validates_presence_of :url
 
-  def scm_adapter
+  def self.scm_adapter_class
     Redmine::Scm::Adapters::GitAdapter
   end
-  
+
   def self.scm_name
     'Git'
   end
index 102c6dda8fec0a0e19a7f42f97ff11febc8db26a..557b9a4dc8ec07b8ba4d45ec25f8250655ac6c2f 100644 (file)
@@ -24,7 +24,7 @@ class Repository::Mercurial < Repository
   attr_protected :root_url
   validates_presence_of :url
 
-  def scm_adapter
+  def self.scm_adapter_class
     Redmine::Scm::Adapters::MercurialAdapter
   end
 
index 091d14130eb985cc11d06c275850221ae635b337..059369298835c893cafc6a11f609e797aa496cab 100644 (file)
@@ -22,10 +22,10 @@ class Repository::Subversion < Repository
   validates_presence_of :url
   validates_format_of :url, :with => /^(http|https|svn(\+[^\s:\/\\]+)?|file):\/\/.+/i
 
-  def scm_adapter
+  def self.scm_adapter_class
     Redmine::Scm::Adapters::SubversionAdapter
   end
-  
+
   def self.scm_name
     'Subversion'
   end