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