diff --git a/models/unit/unit.go b/models/unit/unit.go index a2a9079dc25c7..b1c0584a714bf 100644 --- a/models/unit/unit.go +++ b/models/unit/unit.go @@ -151,12 +151,14 @@ func validateDefaultRepoUnits(defaultUnits, settingDefaultUnits []Type) []Type { // LoadUnitConfig load units from settings func LoadUnitConfig() { - DisabledRepoUnits = FindUnitTypes(setting.Repository.DisabledRepoUnits...) + disabledRepoUnits := FindUnitTypes(setting.Repository.DisabledRepoUnits...) // Check that must units are not disabled - for i, disabledU := range DisabledRepoUnits { - if !disabledU.CanDisable() { + DisabledRepoUnits = disabledRepoUnits[:0] + for _, disabledU := range disabledRepoUnits { + if !disabledU.CanDisable() || disabledU.IsInvalid() { log.Warn("Not allowed to global disable unit %s", disabledU.String()) - DisabledRepoUnits = append(DisabledRepoUnits[:i], DisabledRepoUnits[i+1:]...) + } else { + DisabledRepoUnits = append(DisabledRepoUnits, disabledU) } } @@ -176,6 +178,11 @@ func (u Type) UnitGlobalDisabled() bool { return false } +// IsInvalid checks if this unit type is invalid. +func (u *Type) IsInvalid() bool { + return *u == TypeInvalid +} + // CanDisable checks if this unit type can be disabled. func (u *Type) CanDisable() bool { for _, mu := range MustRepoUnits {