add createNewRepoBlockchain function

This commit is contained in:
nigel007 2019-04-14 20:23:39 +08:00
parent d2ef049f08
commit c8689b3dd0
1 changed files with 45 additions and 0 deletions

View File

@ -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