Ability to disable unused SCM adapters in application settings.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1507 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
05cd95987f
commit
dfe62d7f51
@ -34,9 +34,9 @@ class RepositoriesController < ApplicationController
|
|||||||
@repository = @project.repository
|
@repository = @project.repository
|
||||||
if !@repository
|
if !@repository
|
||||||
@repository = Repository.factory(params[:repository_scm])
|
@repository = Repository.factory(params[:repository_scm])
|
||||||
@repository.project = @project
|
@repository.project = @project if @repository
|
||||||
end
|
end
|
||||||
if request.post?
|
if request.post? && @repository
|
||||||
@repository.attributes = params[:repository]
|
@repository.attributes = params[:repository]
|
||||||
@repository.save
|
@repository.save
|
||||||
end
|
end
|
||||||
|
@ -48,10 +48,13 @@ module RepositoriesHelper
|
|||||||
end
|
end
|
||||||
|
|
||||||
def scm_select_tag(repository)
|
def scm_select_tag(repository)
|
||||||
container = [[]]
|
scm_options = [["--- #{l(:actionview_instancetag_blank_option)} ---", '']]
|
||||||
REDMINE_SUPPORTED_SCM.each {|scm| container << ["Repository::#{scm}".constantize.scm_name, scm]}
|
REDMINE_SUPPORTED_SCM.each do |scm|
|
||||||
|
scm_options << ["Repository::#{scm}".constantize.scm_name, scm] if Setting.enabled_scm.include?(scm) || (repository && repository.class.name.demodulize == scm)
|
||||||
|
end
|
||||||
|
|
||||||
select_tag('repository_scm',
|
select_tag('repository_scm',
|
||||||
options_for_select(container, repository.class.name.demodulize),
|
options_for_select(scm_options, repository.class.name.demodulize),
|
||||||
:disabled => (repository && !repository.new_record?),
|
:disabled => (repository && !repository.new_record?),
|
||||||
:onchange => remote_function(:url => { :controller => 'repositories', :action => 'edit', :id => @project }, :method => :get, :with => "Form.serialize(this.form)")
|
:onchange => remote_function(:url => { :controller => 'repositories', :action => 'edit', :id => @project }, :method => :get, :with => "Form.serialize(this.form)")
|
||||||
)
|
)
|
||||||
|
@ -19,7 +19,10 @@ class Repository < ActiveRecord::Base
|
|||||||
belongs_to :project
|
belongs_to :project
|
||||||
has_many :changesets, :dependent => :destroy, :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC"
|
has_many :changesets, :dependent => :destroy, :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC"
|
||||||
has_many :changes, :through => :changesets
|
has_many :changes, :through => :changesets
|
||||||
|
|
||||||
|
# Checks if the SCM is enabled when creating a repository
|
||||||
|
validate_on_create { |r| r.errors.add(:type, :activerecord_error_invalid) unless Setting.enabled_scm.include?(r.class.name.demodulize) }
|
||||||
|
|
||||||
# Removes leading and trailing whitespace
|
# Removes leading and trailing whitespace
|
||||||
def url=(arg)
|
def url=(arg)
|
||||||
write_attribute(:url, arg ? arg.to_s.strip : nil)
|
write_attribute(:url, arg ? arg.to_s.strip : nil)
|
||||||
|
@ -17,5 +17,5 @@
|
|||||||
:class => 'icon icon-del') if @repository && !@repository.new_record? %>
|
:class => 'icon icon-del') if @repository && !@repository.new_record? %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= submit_tag((@repository.nil? || @repository.new_record?) ? l(:button_create) : l(:button_save)) %>
|
<%= submit_tag((@repository.nil? || @repository.new_record?) ? l(:button_create) : l(:button_save), :disabled => @repository.nil?) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -7,6 +7,13 @@
|
|||||||
<p><label><%= l(:setting_sys_api_enabled) %></label>
|
<p><label><%= l(:setting_sys_api_enabled) %></label>
|
||||||
<%= check_box_tag 'settings[sys_api_enabled]', 1, Setting.sys_api_enabled? %><%= hidden_field_tag 'settings[sys_api_enabled]', 0 %></p>
|
<%= check_box_tag 'settings[sys_api_enabled]', 1, Setting.sys_api_enabled? %><%= hidden_field_tag 'settings[sys_api_enabled]', 0 %></p>
|
||||||
|
|
||||||
|
<p><label><%= l(:setting_enabled_scm) %></label>
|
||||||
|
<% REDMINE_SUPPORTED_SCM.each do |scm| -%>
|
||||||
|
<%= check_box_tag 'settings[enabled_scm][]', scm, Setting.enabled_scm.include?(scm) %> <%= scm %>
|
||||||
|
<% end -%>
|
||||||
|
<%= hidden_field_tag 'settings[enabled_scm][]', '' %>
|
||||||
|
</p>
|
||||||
|
|
||||||
<p><label><%= l(:setting_repositories_encodings) %></label>
|
<p><label><%= l(:setting_repositories_encodings) %></label>
|
||||||
<%= text_field_tag 'settings[repositories_encodings]', Setting.repositories_encodings, :size => 60 %><br /><em><%= l(:text_comma_separated) %></em></p>
|
<%= text_field_tag 'settings[repositories_encodings]', Setting.repositories_encodings, :size => 60 %><br /><em><%= l(:text_comma_separated) %></em></p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -59,6 +59,15 @@ protocol:
|
|||||||
feeds_limit:
|
feeds_limit:
|
||||||
format: int
|
format: int
|
||||||
default: 15
|
default: 15
|
||||||
|
enabled_scm:
|
||||||
|
serialized: true
|
||||||
|
default:
|
||||||
|
- Subversion
|
||||||
|
- Darcs
|
||||||
|
- Mercurial
|
||||||
|
- Cvs
|
||||||
|
- Bazaar
|
||||||
|
- Git
|
||||||
autofetch_changesets:
|
autofetch_changesets:
|
||||||
default: 1
|
default: 1
|
||||||
sys_api_enabled:
|
sys_api_enabled:
|
||||||
|
@ -623,3 +623,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -628,3 +628,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -625,3 +625,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -624,3 +624,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -213,6 +213,7 @@ setting_per_page_options: Objects per page options
|
|||||||
setting_user_format: Users display format
|
setting_user_format: Users display format
|
||||||
setting_activity_days_default: Days displayed on project activity
|
setting_activity_days_default: Days displayed on project activity
|
||||||
setting_display_subprojects_issues: Display subprojects issues on main projects by default
|
setting_display_subprojects_issues: Display subprojects issues on main projects by default
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
|
||||||
project_module_issue_tracking: Issue tracking
|
project_module_issue_tracking: Issue tracking
|
||||||
project_module_time_tracking: Time tracking
|
project_module_time_tracking: Time tracking
|
||||||
|
@ -626,3 +626,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -623,3 +623,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -214,6 +214,7 @@ setting_per_page_options: Options d'objets affichés par page
|
|||||||
setting_user_format: Format d'affichage des utilisateurs
|
setting_user_format: Format d'affichage des utilisateurs
|
||||||
setting_activity_days_default: Nombre de jours affichés sur l'activité des projets
|
setting_activity_days_default: Nombre de jours affichés sur l'activité des projets
|
||||||
setting_display_subprojects_issues: Afficher par défaut les demandes des sous-projets sur les projets principaux
|
setting_display_subprojects_issues: Afficher par défaut les demandes des sous-projets sur les projets principaux
|
||||||
|
setting_enabled_scm: SCM activés
|
||||||
|
|
||||||
project_module_issue_tracking: Suivi des demandes
|
project_module_issue_tracking: Suivi des demandes
|
||||||
project_module_time_tracking: Suivi du temps passé
|
project_module_time_tracking: Suivi du temps passé
|
||||||
|
@ -623,3 +623,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -624,3 +624,4 @@ mail_body_reminder: "%d neked kiosztott feladat határidős az elkövetkező %d
|
|||||||
mail_subject_reminder: "%d feladat határidős az elkövetkező napokban"
|
mail_subject_reminder: "%d feladat határidős az elkövetkező napokban"
|
||||||
text_user_wrote: '%s írta:'
|
text_user_wrote: '%s írta:'
|
||||||
label_duplicated_by: duplikálta
|
label_duplicated_by: duplikálta
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -623,3 +623,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -624,3 +624,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -623,3 +623,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -625,3 +625,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -624,3 +624,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -624,3 +624,4 @@ default_activity_development: Utvikling
|
|||||||
enumeration_issue_priorities: Sakssprioriteringer
|
enumeration_issue_priorities: Sakssprioriteringer
|
||||||
enumeration_doc_categories: Dokument-kategorier
|
enumeration_doc_categories: Dokument-kategorier
|
||||||
enumeration_activities: Aktiviteter (tidssporing)
|
enumeration_activities: Aktiviteter (tidssporing)
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -623,3 +623,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -623,3 +623,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -623,3 +623,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -623,3 +623,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -627,3 +627,4 @@ mail_body_reminder: "%d назначенных на вас задач на сл
|
|||||||
mail_subject_reminder: "%d назначенных на вас задач в ближайшие дни"
|
mail_subject_reminder: "%d назначенных на вас задач в ближайшие дни"
|
||||||
text_user_wrote: '%s написал:'
|
text_user_wrote: '%s написал:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -624,3 +624,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -624,3 +624,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -626,3 +626,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -625,3 +625,4 @@ mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d
|
|||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d issue(s) due in the next days"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s wrote:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -624,3 +624,4 @@ default_activity_development: 開發
|
|||||||
enumeration_issue_priorities: 項目優先權
|
enumeration_issue_priorities: 項目優先權
|
||||||
enumeration_doc_categories: 文件分類
|
enumeration_doc_categories: 文件分類
|
||||||
enumeration_activities: 活動 (時間追蹤)
|
enumeration_activities: 活動 (時間追蹤)
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -624,3 +624,4 @@ enumeration_issue_priorities: 问题优先级
|
|||||||
enumeration_doc_categories: 文档类别
|
enumeration_doc_categories: 文档类别
|
||||||
enumeration_activities: 活动(时间跟踪)
|
enumeration_activities: 活动(时间跟踪)
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: duplicated by
|
||||||
|
setting_enabled_scm: Enabled SCM
|
||||||
|
@ -45,6 +45,14 @@ class RepositoryTest < Test::Unit::TestCase
|
|||||||
assert_equal repository, project.repository
|
assert_equal repository, project.repository
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_should_not_create_with_disabled_scm
|
||||||
|
# disable Subversion
|
||||||
|
Setting.enabled_scm = ['Darcs', 'Git']
|
||||||
|
repository = Repository::Subversion.new(:project => Project.find(3), :url => "svn://localhost")
|
||||||
|
assert !repository.save
|
||||||
|
assert_equal :activerecord_error_invalid, repository.errors.on(:type)
|
||||||
|
end
|
||||||
|
|
||||||
def test_scan_changesets_for_issue_ids
|
def test_scan_changesets_for_issue_ids
|
||||||
# choosing a status to apply to fix issues
|
# choosing a status to apply to fix issues
|
||||||
Setting.commit_fix_status_id = IssueStatus.find(:first, :conditions => ["is_closed = ?", true]).id
|
Setting.commit_fix_status_id = IssueStatus.find(:first, :conditions => ["is_closed = ?", true]).id
|
||||||
|
Loading…
x
Reference in New Issue
Block a user