add createNewRepoBlockchain function
This commit is contained in:
parent
d2ef049f08
commit
c8689b3dd0
|
@ -0,0 +1,45 @@
|
|||
#coding=utf-8
|
||||
|
||||
include RepositoriesHelper
|
||||
|
||||
class RepositoriesService
|
||||
|
||||
def createNewRepoBlockchain project, params_repository
|
||||
status = -1
|
||||
# 判断版本库创建者是否有同名版本库,避免版本库路径一致问题
|
||||
unless is_sigle_identifier?(project.user_id, params_repository.first[1]) # first[1]表示identifier
|
||||
return status, nil
|
||||
else
|
||||
attrs = {:attrs => {:identifier => params_repository.first[1]}, :attrs_extra => {}}
|
||||
repo = Repository.factory('Git')
|
||||
repo.safe_attributes = params_repository
|
||||
if attrs[:attrs_extra].keys.any?
|
||||
repo.merge_extra_info(attrs[:attrs_extra])
|
||||
end
|
||||
repo.project = project
|
||||
repo.type = 'Repository::Gitlab'
|
||||
repo.identifier = repo.identifier.downcase
|
||||
repo.url = repo.identifier
|
||||
repo.root_url = repo.url
|
||||
repo.extra_info = repo.extra_info
|
||||
ActiveRecord::Base.transaction do
|
||||
begin
|
||||
if repo.save!
|
||||
s = Trustie::Gitlab::Sync.new
|
||||
s.create_project(project, repo)
|
||||
raise "sync failed" if project.gpid.blank?
|
||||
status = 0
|
||||
return status, repo # 表示创建成功
|
||||
else
|
||||
return status, nil
|
||||
end
|
||||
rescue Exception => e
|
||||
logger.info("create repository #{e.message}")
|
||||
raise ActiveRecord::Rollback
|
||||
return status, nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in New Issue