summaryrefslogtreecommitdiffstats
path: root/models/unit
diff options
context:
space:
mode:
authortechknowlogick <techknowlogick@gitea.io>2023-02-04 01:48:38 -0500
committerGitHub <noreply@github.com>2023-02-04 14:48:38 +0800
commit2741546bed546fbe9792b48119743cfaebfec6bf (patch)
tree734cb30d79a3f7ec3151c2029508be3aa19043cd /models/unit
parentc2774d9e80d9a436d9c2044960369c4db227e3a0 (diff)
downloadgitea-2741546bed546fbe9792b48119743cfaebfec6bf.tar.gz
gitea-2741546bed546fbe9792b48119743cfaebfec6bf.zip
Repositories: by default disable all units except code and pulls on forks (#22541)
Most of the time forks are used for contributing code only, so not having issues, projects, release and packages is a better default for such cases. They can still be enabled in the settings. A new option `DEFAULT_FORK_REPO_UNITS` is added to configure the default units on forks. Also add missing `repo.packages` unit to documentation. code by: @brechtvl ## :warning: BREAKING :warning: When forking a repository, the fork will now have issues, projects, releases, packages and wiki disabled. These can be enabled in the repository settings afterwards. To change back to the previous default behavior, configure `DEFAULT_FORK_REPO_UNITS` to be the same value as `DEFAULT_REPO_UNITS`. Co-authored-by: Brecht Van Lommel <brecht@blender.org>
Diffstat (limited to 'models/unit')
-rw-r--r--models/unit/unit.go58
1 files changed, 38 insertions, 20 deletions
diff --git a/models/unit/unit.go b/models/unit/unit.go
index bcd0572ab9..a2a9079dc2 100644
--- a/models/unit/unit.go
+++ b/models/unit/unit.go
@@ -94,6 +94,12 @@ var (
TypePackages,
}
+ // ForkRepoUnits contains the default unit types for forks
+ DefaultForkRepoUnits = []Type{
+ TypeCode,
+ TypePullRequests,
+ }
+
// NotAllowedDefaultRepoUnits contains units that can't be default
NotAllowedDefaultRepoUnits = []Type{
TypeExternalWiki,
@@ -110,26 +116,41 @@ var (
DisabledRepoUnits = []Type{}
)
-// LoadUnitConfig load units from settings
-func LoadUnitConfig() {
- setDefaultRepoUnits := FindUnitTypes(setting.Repository.DefaultRepoUnits...)
- // Default repo units set if setting is not empty
- if len(setDefaultRepoUnits) > 0 {
+// Get valid set of default repository units from settings
+func validateDefaultRepoUnits(defaultUnits, settingDefaultUnits []Type) []Type {
+ units := defaultUnits
+
+ // Use setting if not empty
+ if len(settingDefaultUnits) > 0 {
// MustRepoUnits required as default
- DefaultRepoUnits = make([]Type, len(MustRepoUnits))
- copy(DefaultRepoUnits, MustRepoUnits)
- for _, defaultU := range setDefaultRepoUnits {
- if !defaultU.CanBeDefault() {
- log.Warn("Not allowed as default unit: %s", defaultU.String())
+ units = make([]Type, len(MustRepoUnits))
+ copy(units, MustRepoUnits)
+ for _, settingUnit := range settingDefaultUnits {
+ if !settingUnit.CanBeDefault() {
+ log.Warn("Not allowed as default unit: %s", settingUnit.String())
continue
}
// MustRepoUnits already added
- if defaultU.CanDisable() {
- DefaultRepoUnits = append(DefaultRepoUnits, defaultU)
+ if settingUnit.CanDisable() {
+ units = append(units, settingUnit)
}
}
}
+ // Remove disabled units
+ for _, disabledUnit := range DisabledRepoUnits {
+ for i, unit := range units {
+ if unit == disabledUnit {
+ units = append(units[:i], units[i+1:]...)
+ }
+ }
+ }
+
+ return units
+}
+
+// LoadUnitConfig load units from settings
+func LoadUnitConfig() {
DisabledRepoUnits = FindUnitTypes(setting.Repository.DisabledRepoUnits...)
// Check that must units are not disabled
for i, disabledU := range DisabledRepoUnits {
@@ -138,14 +159,11 @@ func LoadUnitConfig() {
DisabledRepoUnits = append(DisabledRepoUnits[:i], DisabledRepoUnits[i+1:]...)
}
}
- // Remove disabled units from default units
- for _, disabledU := range DisabledRepoUnits {
- for i, defaultU := range DefaultRepoUnits {
- if defaultU == disabledU {
- DefaultRepoUnits = append(DefaultRepoUnits[:i], DefaultRepoUnits[i+1:]...)
- }
- }
- }
+
+ setDefaultRepoUnits := FindUnitTypes(setting.Repository.DefaultRepoUnits...)
+ DefaultRepoUnits = validateDefaultRepoUnits(DefaultRepoUnits, setDefaultRepoUnits)
+ setDefaultForkRepoUnits := FindUnitTypes(setting.Repository.DefaultForkRepoUnits...)
+ DefaultForkRepoUnits = validateDefaultRepoUnits(DefaultForkRepoUnits, setDefaultForkRepoUnits)
}
// UnitGlobalDisabled checks if unit type is global disabled