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)
;; 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
;;
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,
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, ", "))
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
}
DisabledRepoUnits []string
DefaultRepoUnits []string
DefaultForkRepoUnits []string
+ DefaultMirrorRepoUnits []string
+ DefaultTemplateRepoUnits []string
PrefixArchiveFiles bool
DisableMigrations bool
DisableStars bool `ini:"DISABLE_STARS"`
DisabledRepoUnits: []string{},
DefaultRepoUnits: []string{},
DefaultForkRepoUnits: []string{},
+ DefaultMirrorRepoUnits: []string{},
+ DefaultTemplateRepoUnits: []string{},
PrefixArchiveFiles: true,
DisableMigrations: false,
DisableStars: false,
// 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 {