Adds support for multiple repositories per project (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8650 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -28,7 +28,6 @@ class RepositoriesController < ApplicationController
|
||||
default_search_scope :changesets
|
||||
|
||||
before_filter :find_project_by_project_id, :only => [:new, :create]
|
||||
before_filter :check_repository_uniqueness, :only => [:new, :create]
|
||||
before_filter :find_repository, :only => [:edit, :update, :destroy, :committers]
|
||||
before_filter :find_project_repository, :except => [:new, :create, :edit, :update, :destroy, :committers]
|
||||
before_filter :authorize
|
||||
@@ -39,6 +38,7 @@ class RepositoriesController < ApplicationController
|
||||
def new
|
||||
scm = params[:repository_scm] || Redmine::Scm::Base.all.first
|
||||
@repository = Repository.factory(scm)
|
||||
@repository.is_default = @project.repository.nil?
|
||||
@repository.project = @project
|
||||
render :layout => !request.xhr?
|
||||
end
|
||||
@@ -97,6 +97,7 @@ class RepositoriesController < ApplicationController
|
||||
(show_error_not_found; return) unless @entries
|
||||
@changesets = @repository.latest_changesets(@path, @rev)
|
||||
@properties = @repository.properties(@path, @rev)
|
||||
@repositories = @project.repositories
|
||||
render :action => 'show'
|
||||
end
|
||||
end
|
||||
@@ -255,18 +256,15 @@ class RepositoriesController < ApplicationController
|
||||
render_404
|
||||
end
|
||||
|
||||
# TODO: remove it when multiple SCM support is added
|
||||
def check_repository_uniqueness
|
||||
if @project.repository
|
||||
redirect_to settings_project_path(@project, :tab => 'repositories')
|
||||
end
|
||||
end
|
||||
|
||||
REV_PARAM_RE = %r{\A[a-f0-9]*\Z}i
|
||||
|
||||
def find_project_repository
|
||||
@project = Project.find(params[:id])
|
||||
@repository = @project.repository
|
||||
if params[:repository_id].present?
|
||||
@repository = @project.repositories.find_by_identifier_param(params[:repository_id])
|
||||
else
|
||||
@repository = @project.repository
|
||||
end
|
||||
(render_404; return false) unless @repository
|
||||
@path = params[:path].join('/') unless params[:path].nil?
|
||||
@path ||= ''
|
||||
|
||||
@@ -19,7 +19,7 @@ class SysController < ActionController::Base
|
||||
before_filter :check_enabled
|
||||
|
||||
def projects
|
||||
p = Project.active.has_module(:repository).find(:all, :include => :repository, :order => 'identifier')
|
||||
p = Project.active.has_module(:repository).find(:all, :include => :repository, :order => "#{Project.table_name}.identifier")
|
||||
# extra_info attribute from repository breaks activeresource client
|
||||
render :xml => p.to_xml(:only => [:id, :identifier, :name, :is_public, :status], :include => {:repository => {:only => [:id, :url]}})
|
||||
end
|
||||
@@ -44,11 +44,11 @@ class SysController < ActionController::Base
|
||||
if params[:id]
|
||||
projects << Project.active.has_module(:repository).find(params[:id])
|
||||
else
|
||||
projects = Project.active.has_module(:repository).find(:all, :include => :repository)
|
||||
projects = Project.active.has_module(:repository).all
|
||||
end
|
||||
projects.each do |project|
|
||||
if project.repository
|
||||
project.repository.fetch_changesets
|
||||
project.repositories.each do |repository|
|
||||
repository.fetch_changesets
|
||||
end
|
||||
end
|
||||
render :nothing => true, :status => 200
|
||||
|
||||
Reference in New Issue
Block a user