|
|
|
@ -64,13 +64,18 @@ class RepositoriesController < ApplicationController
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def forked
|
|
|
|
|
# REDO: 那些人有权限forked项目
|
|
|
|
|
# g = Gitlab.client
|
|
|
|
|
# gproject = g.post ("/projects/fork/#{@project.gpid}")
|
|
|
|
|
if gproject
|
|
|
|
|
copy_project(@project, gproject)
|
|
|
|
|
# 被forked的标识如果不满足单个用户唯一性,则不执行fork
|
|
|
|
|
if is_sigle_identifier?(User.current, @repository.identifier)
|
|
|
|
|
# REDO: 那些人有权限forked项目
|
|
|
|
|
g = Gitlab.client
|
|
|
|
|
gproject = g.post ("/projects/fork/#{@project.gpid}?user_id=#{User.current.id}")
|
|
|
|
|
if gproject
|
|
|
|
|
copy_project(@project, gproject)
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
flash[:notice] = l(:project_gitlab_fork_double_message)
|
|
|
|
|
redirect_to settings_project_url(@project, :tab => 'repositories')
|
|
|
|
|
end
|
|
|
|
|
# render :layout => 'base_projects'
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# copy a project for fork
|
|
|
|
@ -79,6 +84,7 @@ class RepositoriesController < ApplicationController
|
|
|
|
|
project.name = @project.name
|
|
|
|
|
project.is_public = @project.is_public
|
|
|
|
|
project.status = @project.status
|
|
|
|
|
project.description = @project.description
|
|
|
|
|
project.hidden_repo = @project.hidden_repo
|
|
|
|
|
project.user_id = User.current.id
|
|
|
|
|
project.project_type = 0
|
|
|
|
@ -94,7 +100,6 @@ class RepositoriesController < ApplicationController
|
|
|
|
|
Rails.logger.debug "ProjectStatus created: #{project_status.to_json}"
|
|
|
|
|
project.members << m
|
|
|
|
|
project.project_infos << project_info
|
|
|
|
|
repository = Repository.create(:project_id => project.id, :url =>'ddd222', :type => 'Repository::Gitlab', :identifier => 'ddd222', :is_default => true)
|
|
|
|
|
copy_repository(project, gproject)
|
|
|
|
|
respond_to do |format|
|
|
|
|
|
format.html {
|
|
|
|
@ -119,15 +124,16 @@ class RepositoriesController < ApplicationController
|
|
|
|
|
|
|
|
|
|
def copy_repository(project, gproject)
|
|
|
|
|
# 避免
|
|
|
|
|
if is_sigle_identifier?(project.owner, gproject.name)
|
|
|
|
|
|
|
|
|
|
if is_sigle_identifier?(project.user_id, gproject.name)
|
|
|
|
|
repository = Repository.factory('Git')
|
|
|
|
|
repository.project_id = project.id
|
|
|
|
|
repository.type = 'Repository::Gitlab'
|
|
|
|
|
repository.url = gproject.name
|
|
|
|
|
repository.identifier = gproject.name
|
|
|
|
|
repository = repository.save
|
|
|
|
|
else
|
|
|
|
|
flash[:notice] = l(:project_gitlab_create_double_message)
|
|
|
|
|
end
|
|
|
|
|
repository = Repository.factory('Git')
|
|
|
|
|
repository.project_id = project.id
|
|
|
|
|
repository.type = 'Repository::Gitlab'
|
|
|
|
|
repository.url = gproject.name
|
|
|
|
|
repository.identifier = gproject.name
|
|
|
|
|
repository = repository.save
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def newrepo
|
|
|
|
@ -181,21 +187,27 @@ update
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def create
|
|
|
|
|
attrs = pickup_extra_info
|
|
|
|
|
@repository = Repository.factory('Git')
|
|
|
|
|
@repository.safe_attributes = params[:repository]
|
|
|
|
|
if attrs[:attrs_extra].keys.any?
|
|
|
|
|
@repository.merge_extra_info(attrs[:attrs_extra])
|
|
|
|
|
end
|
|
|
|
|
@repository.project = @project
|
|
|
|
|
@repository.type = 'Repository::Gitlab'
|
|
|
|
|
@repository.url = @repository.identifier
|
|
|
|
|
if request.post? && @repository.save
|
|
|
|
|
s = Trustie::Gitlab::Sync.new
|
|
|
|
|
s.create_project(@project, @repository)
|
|
|
|
|
# 判断版本库创建者是否有同名版本库,避免版本库路径一致问题
|
|
|
|
|
unless is_sigle_identifier?(@project.user_id, params[:repository].first[1])
|
|
|
|
|
flash[:notice] = l(:project_gitlab_create_double_message)
|
|
|
|
|
redirect_to settings_project_url(@project, :tab => 'repositories')
|
|
|
|
|
else
|
|
|
|
|
redirect_to settings_project_url(@project, :tab => 'repositories',:repository_error_message=>@repository.errors.full_messages)
|
|
|
|
|
attrs = pickup_extra_info
|
|
|
|
|
@repository = Repository.factory('Git')
|
|
|
|
|
@repository.safe_attributes = params[:repository]
|
|
|
|
|
if attrs[:attrs_extra].keys.any?
|
|
|
|
|
@repository.merge_extra_info(attrs[:attrs_extra])
|
|
|
|
|
end
|
|
|
|
|
@repository.project = @project
|
|
|
|
|
@repository.type = 'Repository::Gitlab'
|
|
|
|
|
@repository.url = @repository.identifier
|
|
|
|
|
if request.post? && @repository.save
|
|
|
|
|
s = Trustie::Gitlab::Sync.new
|
|
|
|
|
s.create_project(@project, @repository)
|
|
|
|
|
redirect_to settings_project_url(@project, :tab => 'repositories')
|
|
|
|
|
else
|
|
|
|
|
redirect_to settings_project_url(@project, :tab => 'repositories',:repository_error_message=>@repository.errors.full_messages)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|