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?
def scm_name
self.class.scm_name
end
-
+
def supports_cat?
scm.supports_cat?
end
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
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
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)
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)
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
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
attr_protected :root_url
validates_presence_of :url
- def scm_adapter
+ def self.scm_adapter_class
Redmine::Scm::Adapters::MercurialAdapter
end
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