From 6a4ceea1669889caf96ae47cb5b8f2721f89e032 Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Tue, 21 Apr 2020 18:41:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9project=E4=B8=8Erepo=E7=9A=84?= =?UTF-8?q?iden=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/tasks/sync_forge_gitea.rake | 81 ++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 36 deletions(-) diff --git a/lib/tasks/sync_forge_gitea.rake b/lib/tasks/sync_forge_gitea.rake index c5abba8d3..d7bbabbf9 100644 --- a/lib/tasks/sync_forge_gitea.rake +++ b/lib/tasks/sync_forge_gitea.rake @@ -5,45 +5,54 @@ namespace :sync_forge_gitea do desc "if gitea .git file not present ,and create new .git file" task created_repo: :environment do - puts "__________begin_to_create_repository_git___________" - all_repositories = Repository.select(:id,:identifier, :user_id,:hidden,:project_id,:url).includes(project: :owner) - success_ids = all_repositories.where("url like ?", "%gitea.trustie.net%").pluck(:id) - failed_repos = all_repositories.where.not(id: success_ids) - failed_repos.find_each do |r| - project = r.project - user = project.owner - unless r.url.to_s.include?("gitea.trustie.net") - if user && user.try(:gitea_token).present? - repo_status = Gitea::Repository::GetService.new(user, r.identifier).call - if repo_status.present? - r.update_attribute(:url, repo_status["clone_url"]) - project.update_attributes(gpid: repo_status["id"],identifier: r.identifier) - else - ActiveRecord::Base.transaction do - repository_params= { - name: r.identifier, - auto_init: true, - private: r.hidden, - } - begin - gitea_repository = Gitea::Repository::CreateService.new(user.gitea_token, repository_params).call - if gitea_repository - r.update_attribute(:url, gitea_repository["clone_url"]) - project.update_attributes(gpid: repo_status["id"],identifier: r.identifier) - end - Rails.logger.info( "__________after_create_gitea_repository_____#{gitea_repository}______") + ##这个方法是更新 project的identifier 不等于 repository的identifier的问题 - rescue => e - Rails.logger.info( "_________create_gitea_git________file______error: #{e}") - end - end - - end - end - end + all_projects = Project.joins(:repository).where("projects.identifier != repositories.identifier").includes(:repository) + all_projects.each do |project| + project.update_attribute(:identifier, project.repository.identifier) end - puts "__________end_to_create_repository_git___________" + + # 下述方法是更新 gitea记录存在但是 forge上没有创建 gitea的问题 + # puts "__________begin_to_create_repository_git___________" + # all_repositories = Repository.select(:id,:identifier, :user_id,:hidden,:project_id,:url).includes(project: :owner) + # success_ids = all_repositories.where("url like ?", "%gitea.trustie.net%").pluck(:id) + # failed_repos = all_repositories.where.not(id: success_ids) + # failed_repos.find_each do |r| + # project = r.project + # user = project.owner + # unless r.url.to_s.include?("gitea.trustie.net") + # if user && user.try(:gitea_token).present? + # repo_status = Gitea::Repository::GetService.new(user, r.identifier).call + # if repo_status.present? + # r.update_attribute(:url, repo_status["clone_url"]) + # project.update_attributes(gpid: repo_status["id"],identifier: r.identifier) + # else + # ActiveRecord::Base.transaction do + # repository_params= { + # name: r.identifier, + # auto_init: true, + # private: r.hidden, + # } + # begin + # gitea_repository = Gitea::Repository::CreateService.new(user.gitea_token, repository_params).call + # if gitea_repository + # r.update_attribute(:url, gitea_repository["clone_url"]) + # project.update_attributes(gpid: repo_status["id"],identifier: r.identifier) + # + # end + # Rails.logger.info( "__________after_create_gitea_repository_____#{gitea_repository}______") + # + # rescue => e + # Rails.logger.info( "_________create_gitea_git________file______error: #{e}") + # end + # end + # + # end + # end + # end + # end + # puts "__________end_to_create_repository_git___________" end end \ No newline at end of file