Now SCMs can be added or removed using a simple API, instead of being hardcoded: Redmine::Scm::Base.add('ScmName') Redmine::Scm::Base.delete('ScmName') git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3440 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/1.0.0
@@ -46,7 +46,7 @@ class ApplicationController < ActionController::Base | |||
include Redmine::MenuManager::MenuController | |||
helper Redmine::MenuManager::MenuHelper | |||
REDMINE_SUPPORTED_SCM.each do |scm| | |||
Redmine::Scm::Base.all.each do |scm| | |||
require_dependency "repository/#{scm.underscore}" | |||
end | |||
@@ -126,7 +126,7 @@ module RepositoriesHelper | |||
def scm_select_tag(repository) | |||
scm_options = [["--- #{l(:actionview_instancetag_blank_option)} ---", '']] | |||
REDMINE_SUPPORTED_SCM.each do |scm| | |||
Redmine::Scm::Base.all.each do |scm| | |||
scm_options << ["Repository::#{scm}".constantize.scm_name, scm] if Setting.enabled_scm.include?(scm) || (repository && repository.class.name.demodulize == scm) | |||
end | |||
@@ -13,7 +13,7 @@ | |||
<%= link_to_function l(:label_generate_key), "if ($('settings_sys_api_key').disabled == false) { $('settings_sys_api_key').value = randomKey(20) }" %> | |||
</p> | |||
<p><%= setting_multiselect(:enabled_scm, REDMINE_SUPPORTED_SCM) %></p> | |||
<p><%= setting_multiselect(:enabled_scm, Redmine::Scm::Base.all) %></p> | |||
<p><%= setting_text_field :repositories_encodings, :size => 60 %><br /> | |||
<em><%= l(:text_comma_separated) %></em></p> |
@@ -7,6 +7,7 @@ require 'redmine/themes' | |||
require 'redmine/hook' | |||
require 'redmine/plugin' | |||
require 'redmine/wiki_formatting' | |||
require 'redmine/scm/base' | |||
begin | |||
require_library_or_gem 'RMagick' unless Object.const_defined?(:Magick) | |||
@@ -21,7 +22,13 @@ else | |||
FCSV = CSV | |||
end | |||
REDMINE_SUPPORTED_SCM = %w( Subversion Darcs Mercurial Cvs Bazaar Git Filesystem ) | |||
Redmine::Scm::Base.add "Subversion" | |||
Redmine::Scm::Base.add "Darcs" | |||
Redmine::Scm::Base.add "Mercurial" | |||
Redmine::Scm::Base.add "Cvs" | |||
Redmine::Scm::Base.add "Bazaar" | |||
Redmine::Scm::Base.add "Git" | |||
Redmine::Scm::Base.add "Filesystem" | |||
# Permissions | |||
Redmine::AccessControl.map do |map| |
@@ -0,0 +1,23 @@ | |||
module Redmine | |||
module Scm | |||
class Base | |||
class << self | |||
def all | |||
@scms | |||
end | |||
# Add a new SCM adapter and repository | |||
def add(scm_name) | |||
@scms ||= [] | |||
@scms << scm_name | |||
end | |||
# Remove a SCM adapter from Redmine's list of supported scms | |||
def delete(scm_name) | |||
@scms.delete(scm_name) | |||
end | |||
end | |||
end | |||
end | |||
end |