From b0169a7ced3daa7d5d6b15e3bb171bc8ac30d4f1 Mon Sep 17 00:00:00 2001 From: Zettat123 Date: Mon, 4 Nov 2024 17:48:05 +0800 Subject: [PATCH 1/3] add options --- custom/conf/app.example.ini | 8 +++++++ models/unit/unit.go | 41 +++++++++++++++++++++++++++++++++++ modules/repository/create.go | 4 ++++ modules/setting/repository.go | 4 ++++ 4 files changed, 57 insertions(+) diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini index 69b57a8c01257..a7fbfb42bf088 100644 --- a/custom/conf/app.example.ini +++ b/custom/conf/app.example.ini @@ -1007,6 +1007,14 @@ LEVEL = Info ;; The set of allowed values and rules are the same as DEFAULT_REPO_UNITS. ;DEFAULT_FORK_REPO_UNITS = repo.code,repo.pulls ;; +;; Comma separated list of default mirror repo units. +;; The set of allowed values and rules are the same as DEFAULT_REPO_UNITS. +;DEFAULT_MIRROR_REPO_UNITS = repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,repo.projects,repo.packages +;; +;; Comma separated list of default template repo units. +;; The set of allowed values and rules are the same as DEFAULT_REPO_UNITS. +;DEFAULT_TEMPLATE_REPO_UNITS = repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,repo.projects,repo.packages +;; ;; Prefix archive files by placing them in a directory named after the repository ;PREFIX_ARCHIVE_FILES = true ;; diff --git a/models/unit/unit.go b/models/unit/unit.go index 3b62e5f982267..7693253e9733d 100644 --- a/models/unit/unit.go +++ b/models/unit/unit.go @@ -80,6 +80,28 @@ var ( TypePullRequests, } + // DefaultMirrorRepoUnits contains the default unit types for mirrors + DefaultMirrorRepoUnits = []Type{ + TypeCode, + TypeIssues, + TypePullRequests, + TypeReleases, + TypeWiki, + TypeProjects, + TypePackages, + } + + // DefaultTemplateRepoUnits contains the default unit types for templates + DefaultTemplateRepoUnits = []Type{ + TypeCode, + TypeIssues, + TypePullRequests, + TypeReleases, + TypeWiki, + TypeProjects, + TypePackages, + } + // NotAllowedDefaultRepoUnits contains units that can't be default NotAllowedDefaultRepoUnits = []Type{ TypeExternalWiki, @@ -147,6 +169,7 @@ func LoadUnitConfig() error { if len(DefaultRepoUnits) == 0 { return errors.New("no default repository units found") } + // default fork repo units setDefaultForkRepoUnits, invalidKeys := FindUnitTypes(setting.Repository.DefaultForkRepoUnits...) if len(invalidKeys) > 0 { log.Warn("Invalid keys in default fork repo units: %s", strings.Join(invalidKeys, ", ")) @@ -155,6 +178,24 @@ func LoadUnitConfig() error { if len(DefaultForkRepoUnits) == 0 { return errors.New("no default fork repository units found") } + // default mirror repo units + setDefaultMirrorRepoUnits, invalidKeys := FindUnitTypes(setting.Repository.DefaultMirrorRepoUnits...) + if len(invalidKeys) > 0 { + log.Warn("Invalid keys in default mirror repo units: %s", strings.Join(invalidKeys, ", ")) + } + DefaultMirrorRepoUnits = validateDefaultRepoUnits(DefaultMirrorRepoUnits, setDefaultMirrorRepoUnits) + if len(DefaultMirrorRepoUnits) == 0 { + return errors.New("no default mirror repository units found") + } + // default template repo units + setDefaultTemplateRepoUnits, invalidKeys := FindUnitTypes(setting.Repository.DefaultTemplateRepoUnits...) + if len(invalidKeys) > 0 { + log.Warn("Invalid keys in default template repo units: %s", strings.Join(invalidKeys, ", ")) + } + DefaultTemplateRepoUnits = validateDefaultRepoUnits(DefaultTemplateRepoUnits, setDefaultTemplateRepoUnits) + if len(DefaultTemplateRepoUnits) == 0 { + return errors.New("no default template repository units found") + } return nil } diff --git a/modules/repository/create.go b/modules/repository/create.go index 4f18b9b3fa647..8f44d8da24ca9 100644 --- a/modules/repository/create.go +++ b/modules/repository/create.go @@ -70,6 +70,10 @@ func CreateRepositoryByExample(ctx context.Context, doer, u *user_model.User, re defaultUnits := unit.DefaultRepoUnits if isFork { defaultUnits = unit.DefaultForkRepoUnits + } else if repo.IsMirror { + defaultUnits = unit.DefaultMirrorRepoUnits + } else if repo.IsTemplate { + defaultUnits = unit.DefaultTemplateRepoUnits } units := make([]repo_model.RepoUnit, 0, len(defaultUnits)) for _, tp := range defaultUnits { diff --git a/modules/setting/repository.go b/modules/setting/repository.go index 8656ebc7ecfd0..14cf5805c02b5 100644 --- a/modules/setting/repository.go +++ b/modules/setting/repository.go @@ -43,6 +43,8 @@ var ( DisabledRepoUnits []string DefaultRepoUnits []string DefaultForkRepoUnits []string + DefaultMirrorRepoUnits []string + DefaultTemplateRepoUnits []string PrefixArchiveFiles bool DisableMigrations bool DisableStars bool `ini:"DISABLE_STARS"` @@ -161,6 +163,8 @@ var ( DisabledRepoUnits: []string{}, DefaultRepoUnits: []string{}, DefaultForkRepoUnits: []string{}, + DefaultMirrorRepoUnits: []string{}, + DefaultTemplateRepoUnits: []string{}, PrefixArchiveFiles: true, DisableMigrations: false, DisableStars: false, From cdec4fe896b952a7235f436f7000a05d14217740 Mon Sep 17 00:00:00 2001 From: Zettat123 Date: Tue, 5 Nov 2024 10:17:40 +0800 Subject: [PATCH 2/3] use switch --- modules/repository/create.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/repository/create.go b/modules/repository/create.go index 8f44d8da24ca9..60845517babc6 100644 --- a/modules/repository/create.go +++ b/modules/repository/create.go @@ -68,11 +68,12 @@ func CreateRepositoryByExample(ctx context.Context, doer, u *user_model.User, re // insert units for repo defaultUnits := unit.DefaultRepoUnits - if isFork { + switch { + case isFork: defaultUnits = unit.DefaultForkRepoUnits - } else if repo.IsMirror { + case repo.IsMirror: defaultUnits = unit.DefaultMirrorRepoUnits - } else if repo.IsTemplate { + case repo.IsTemplate: defaultUnits = unit.DefaultTemplateRepoUnits } units := make([]repo_model.RepoUnit, 0, len(defaultUnits)) From e98f6d7f5acac068733ffcf339966a9f2c314f01 Mon Sep 17 00:00:00 2001 From: Zettat123 Date: Tue, 5 Nov 2024 10:31:49 +0800 Subject: [PATCH 3/3] remove mirror pr unit --- custom/conf/app.example.ini | 2 +- models/unit/unit.go | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini index a7fbfb42bf088..e315d9d3daa67 100644 --- a/custom/conf/app.example.ini +++ b/custom/conf/app.example.ini @@ -1009,7 +1009,7 @@ LEVEL = Info ;; ;; Comma separated list of default mirror repo units. ;; The set of allowed values and rules are the same as DEFAULT_REPO_UNITS. -;DEFAULT_MIRROR_REPO_UNITS = repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,repo.projects,repo.packages +;DEFAULT_MIRROR_REPO_UNITS = repo.code,repo.releases,repo.issues,repo.wiki,repo.projects,repo.packages ;; ;; Comma separated list of default template repo units. ;; The set of allowed values and rules are the same as DEFAULT_REPO_UNITS. diff --git a/models/unit/unit.go b/models/unit/unit.go index 7693253e9733d..c816fc6c68861 100644 --- a/models/unit/unit.go +++ b/models/unit/unit.go @@ -84,7 +84,6 @@ var ( DefaultMirrorRepoUnits = []Type{ TypeCode, TypeIssues, - TypePullRequests, TypeReleases, TypeWiki, TypeProjects,