From a98fe055992006895fbae919aad4ba881fb07a62 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 8 May 2024 11:13:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=96=B9=E5=90=91=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/v1/projects/sync_repositories_controller.rb | 6 +++++- app/models/sync_repository_branch.rb | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/controllers/api/v1/projects/sync_repositories_controller.rb b/app/controllers/api/v1/projects/sync_repositories_controller.rb index 1c98309d9..ec01ed84e 100644 --- a/app/controllers/api/v1/projects/sync_repositories_controller.rb +++ b/app/controllers/api/v1/projects/sync_repositories_controller.rb @@ -30,7 +30,11 @@ class Api::V1::Projects::SyncRepositoriesController < Api::V1::BaseController @sync_repositories = SyncRepository.where(project: @project, sync_direction: params[:sync_direction]) end branch = params[:ref].split("refs/heads/")[-1] - @sync_repository_branches = SyncRepositoryBranch.where(sync_repository_id: @sync_repositories, gitlink_branch_name: branch, enable: true) + if params[:sync_direction].to_i == 1 + @sync_repository_branches = SyncRepositoryBranch.where(sync_repository_id: @sync_repositories, gitlink_branch_name: branch, enable: true) + else + @sync_repository_branches = SyncRepositoryBranch.where(sync_repository_id: @sync_repositories, external_branch_name: branch, enable: true) + end # 全部分支同步暂时不做 # @sync_repositories.each do |item| # TouchSyncJob.perform_later(item) diff --git a/app/models/sync_repository_branch.rb b/app/models/sync_repository_branch.rb index f23f5fe3d..4748cbec2 100644 --- a/app/models/sync_repository_branch.rb +++ b/app/models/sync_repository_branch.rb @@ -22,5 +22,17 @@ class SyncRepositoryBranch < ApplicationRecord belongs_to :sync_repository + before_destroy :unbind_reposyncer + enum sync_status: {success: 1, failure: 2} + + + def unbind_reposyncer + if self.sync_repository.sync_direction.to_i == 1 + Reposync::DeleteRepoService.call(self.sync_repository&.repo_name, self.gitlink_branch_name) + else + Reposync::DeleteRepoService.call(self.sync_repository&.repo_name, self.external_branch_name) + end + end + end