| @@ -5,45 +5,54 @@ namespace :sync_forge_gitea do | |||||
| desc "if gitea .git file not present ,and create new .git file" | desc "if gitea .git file not present ,and create new .git file" | ||||
| task created_repo: :environment do | 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 | 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 | ||||
| end | end | ||||