From 39e7eded22ae84a90785dd663f956962d4f289ec Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 31 Oct 2025 09:13:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9Agitlink=E5=8F=8C?= =?UTF-8?q?=E5=90=91=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/sync_repositories/gitlink.rb | 24 +++++++++++++++++++ .../sync_repositories/create_service.rb | 12 +++++++--- 2 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 app/models/sync_repositories/gitlink.rb diff --git a/app/models/sync_repositories/gitlink.rb b/app/models/sync_repositories/gitlink.rb new file mode 100644 index 000000000..6fc9dfa50 --- /dev/null +++ b/app/models/sync_repositories/gitlink.rb @@ -0,0 +1,24 @@ +# == Schema Information +# +# Table name: sync_repositories +# +# id :integer not null, primary key +# project_id :integer +# type :string(255) +# repo_name :string(255) +# external_repo_address :string(255) +# sync_granularity :integer +# sync_direction :integer +# created_at :datetime not null +# updated_at :datetime not null +# external_token :string(255) +# webhook_gid :integer +# +# Indexes +# +# index_sync_repositories_on_project_id (project_id) +# + +class SyncRepositories::Gitlink < SyncRepository + +end diff --git a/app/services/api/v1/projects/sync_repositories/create_service.rb b/app/services/api/v1/projects/sync_repositories/create_service.rb index 4a0dc5091..ff1182555 100644 --- a/app/services/api/v1/projects/sync_repositories/create_service.rb +++ b/app/services/api/v1/projects/sync_repositories/create_service.rb @@ -5,7 +5,7 @@ class Api::V1::Projects::SyncRepositories::CreateService < ApplicationService attr_reader :project, :type, :external_token, :external_repo_address, :sync_granularity, :external_branch_name, :gitlink_branch_name, :first_sync_direction attr_accessor :sync_repository1, :sync_repository2, :sync_repository_branch1, :sync_repository_branch2, :gitea_webhook - validates :type, inclusion: {in: %w(SyncRepositories::Gitee SyncRepositories::Github)} + validates :type, inclusion: {in: %w(SyncRepositories::Gitee SyncRepositories::Github SyncRepositories::Gitlink)} validates :external_repo_address, format: { with: CustomRegexp::URL_REGEX, multiline: true, message: "地址格式不正确" } validates :sync_granularity, :first_sync_direction, inclusion: {in: [1,2]} # validate :check_gitlink_branch_name @@ -74,8 +74,11 @@ class Api::V1::Projects::SyncRepositories::CreateService < ApplicationService def create_webhook url = "" - if type == "SyncRepositories::Gitee" + case type + when 'SyncRepositories::Gitee' url = "#{Rails.application.config_for(:configuration)['platform_url']}/api/v1/#{project&.owner&.login}/#{project&.identifier}/sync_repositories/sync?sync_direction=1&repo_type=SyncRepositories::Gitee" + when 'SyncRepositories::Gitlink' + url = "#{Rails.application.config_for(:configuration)['platform_url']}/api/v1/#{project&.owner&.login}/#{project&.identifier}/sync_repositories/sync?sync_direction=1&repo_type=SyncRepositories::Gitlink" else url = "#{Rails.application.config_for(:configuration)['platform_url']}/api/v1/#{project&.owner&.login}/#{project&.identifier}/sync_repositories/sync?sync_direction=1&repo_type=SyncRepositories::Github" end @@ -92,8 +95,11 @@ class Api::V1::Projects::SyncRepositories::CreateService < ApplicationService end def repo_name(sync_direction) - if type == "SyncRepositories::Gitee" + case type + when 'SyncRepositories::Gitee' return "gitee:#{project.id}:#{sync_granularity}:#{sync_direction}" + when 'SyncRepositories::Gitlink' + return "gitlink:#{project.id}:#{sync_granularity}:#{sync_direction}" else return "github:#{project.id}:#{sync_granularity}:#{sync_direction}" end