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:
Jean-Philippe Lang
2012-01-15 18:19:19 +00:00
parent d996cc0584
commit 1bd5e58c84
32 changed files with 384 additions and 78 deletions
+7 -9
View File
@@ -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 ||= ''
+4 -4
View File
@@ -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