aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZettat123 <zettat123@gmail.com>2024-11-11 08:11:00 +0800
committerGitHub <noreply@github.com>2024-11-11 00:11:00 +0000
commitb1f42a0cdddc8db9eef87041d6bcb328b2ef35fc (patch)
treefb7cd68218b98344859421debaf925b7ace1b306
parenta910abbb451ea89b8279b43bd818a140fe0f3b51 (diff)
downloadgitea-b1f42a0cdddc8db9eef87041d6bcb328b2ef35fc.tar.gz
gitea-b1f42a0cdddc8db9eef87041d6bcb328b2ef35fc.zip
Add `DEFAULT_MIRROR_REPO_UNITS` and `DEFAULT_TEMPLATE_REPO_UNITS` options (#32416)
Resolve #30350 The action unit of mirrors and templates should be disabled by default. This PR adds `DEFAULT_MIRROR_REPO_UNITS` and `DEFAULT_TEMPLATE_REPO_UNITS` options to allow users to specify default units for mirrors and templates. Thanks to @lng2020 for the [idea](https://github.com/go-gitea/gitea/issues/30350#issuecomment-2053942243)
-rw-r--r--custom/conf/app.example.ini8
-rw-r--r--models/unit/unit.go40
-rw-r--r--modules/setting/repository.go4
-rw-r--r--services/repository/create.go7
4 files changed, 58 insertions, 1 deletions
diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini
index f201ff1d19..7d5b3961bc 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.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 3b62e5f982..c816fc6c68 100644
--- a/models/unit/unit.go
+++ b/models/unit/unit.go
@@ -80,6 +80,27 @@ var (
TypePullRequests,
}
+ // DefaultMirrorRepoUnits contains the default unit types for mirrors
+ DefaultMirrorRepoUnits = []Type{
+ TypeCode,
+ TypeIssues,
+ 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 +168,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 +177,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/setting/repository.go b/modules/setting/repository.go
index 8656ebc7ec..14cf5805c0 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,
diff --git a/services/repository/create.go b/services/repository/create.go
index 261ac7fccc..0207f12a33 100644
--- a/services/repository/create.go
+++ b/services/repository/create.go
@@ -381,8 +381,13 @@ 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
+ case repo.IsMirror:
+ defaultUnits = unit.DefaultMirrorRepoUnits
+ case repo.IsTemplate:
+ defaultUnits = unit.DefaultTemplateRepoUnits
}
units := make([]repo_model.RepoUnit, 0, len(defaultUnits))
for _, tp := range defaultUnits {