From 447429a663ecb427c167e873f53c1f3354ed2eef Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 31 Jan 2024 16:47:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E9=A1=B9=E7=9B=AEauto=5Finit=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 2 +- app/controllers/repositories_controller.rb | 3 ++- app/forms/projects/create_form.rb | 8 ++++++-- app/services/projects/create_service.rb | 3 ++- app/services/repositories/create_service.rb | 6 +++--- app/views/repositories/detail.json.jbuilder | 1 + 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index ca6b38360..7a69c52ec 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -283,7 +283,7 @@ class ProjectsController < ApplicationController private def project_params params.permit(:user_id, :name, :description, :repository_name, :website, :lesson_url, :default_branch, :identifier, - :project_category_id, :project_language_id, :license_id, :ignore_id, :private) + :project_category_id, :project_language_id, :license_id, :ignore_id, :private, :auto_init) end def mirror_params diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index c13d784e1..98ff42a74 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -60,8 +60,9 @@ class RepositoriesController < ApplicationController @entries = Gitea::Repository::Entries::ListService.new(@owner, @project.identifier, ref: @ref).call @entries = @entries.present? ? @entries.sort_by{ |hash| hash['type'] } : [] @path = GiteaService.gitea_config[:domain]+"/#{@project.owner.login}/#{@project.identifier}/raw/branch/#{@ref}/" + @repo_detail = $gitea_client.get_repos_by_owner_repo(@owner.login, @project.identifier) + return render_not_found if @entries.blank? && !@repo_detail["empty"] end - return render_not_found if @entries.blank? end def top_counts diff --git a/app/forms/projects/create_form.rb b/app/forms/projects/create_form.rb index 6b86362c8..308e0aa62 100644 --- a/app/forms/projects/create_form.rb +++ b/app/forms/projects/create_form.rb @@ -1,6 +1,6 @@ class Projects::CreateForm < BaseForm attr_accessor :user_id, :name, :description, :repository_name, :project_category_id, - :project_language_id, :ignore_id, :license_id, :private, :owner + :project_language_id, :ignore_id, :license_id, :private, :owner, :auto_init validates :user_id, :name, :repository_name, presence: true validates :repository_name, format: { with: CustomRegexp::REPOSITORY_NAME_REGEX, multiline: true, message: "项目标识只能包含数字,字母,下划线(_),中划线(-),英文句号(.),必须以数字和字母开头,不能以下划线/中划线/英文句号开头和结尾" } @@ -9,7 +9,7 @@ class Projects::CreateForm < BaseForm validates :repository_name, length: { maximum: 100 } validates :description, length: { maximum: 200 } - validate :check_ignore, :check_license, :check_owner, :check_max_repo_creation + validate :check_ignore, :check_license, :check_auto_init, :check_owner, :check_max_repo_creation validate do check_project_category(project_category_id) check_project_language(project_language_id) @@ -25,6 +25,10 @@ class Projects::CreateForm < BaseForm raise "ignore_id值无效." if ignore_id && Ignore.find_by(id: ignore_id).blank? end + def check_auto_init + raise "auto_init值无效." if ignore_id && license_id && !auto_init + end + def check_owner @project_owner = Owner.find_by(id: user_id) raise "user_id值无效." if user_id && @project_owner.blank? diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index ff36dfe52..408e6621c 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -61,7 +61,8 @@ class Projects::CreateService < ApplicationService { hidden: !repo_is_public, user_id: params[:user_id], - identifier: params[:repository_name] + identifier: params[:repository_name], + auto_init: params[:auto_init] } end diff --git a/app/services/repositories/create_service.rb b/app/services/repositories/create_service.rb index e7ff8bd1d..9fba6122e 100644 --- a/app/services/repositories/create_service.rb +++ b/app/services/repositories/create_service.rb @@ -67,7 +67,7 @@ class Repositories::CreateService < ApplicationService end def repository_params - params.merge(project_id: project.id) + params.merge(project_id: project.id).except(:auto_init) end def gitea_repository_params @@ -75,7 +75,7 @@ class Repositories::CreateService < ApplicationService name: params[:identifier], private: params[:hidden], # readme: "ReadMe", - "auto_init": true, + auto_init: params[:auto_init], # "description": "string", # "gitignores": "string", # "issue_labels": "string", @@ -89,7 +89,7 @@ class Repositories::CreateService < ApplicationService license = project.license hash = hash.merge(license: license.name) if license hash = hash.merge(gitignores: ignore.name) if ignore - hash = hash.merge(auto_init: true) if ignore || license + hash = hash.merge(auto_init: true) if ignore && license hash end end diff --git a/app/views/repositories/detail.json.jbuilder b/app/views/repositories/detail.json.jbuilder index 1164f4030..0ef930558 100644 --- a/app/views/repositories/detail.json.jbuilder +++ b/app/views/repositories/detail.json.jbuilder @@ -1,3 +1,4 @@ +json.empty @result[:repo]["empty"] json.content @project.content json.website @project.website json.lesson_url @project.lesson_url