If no specific context is required for status check, require an overall success (#8318)
Signed-off-by: Elias Norberg <elias@aisle.se>
This commit is contained in:
parent
0d2566b560
commit
668d3d02aa
2 changed files with 10 additions and 2 deletions
|
@ -1326,7 +1326,7 @@ settings.protect_merge_whitelist_committers_desc = Allow only whitelisted users
|
||||||
settings.protect_merge_whitelist_users = Whitelisted users for merging:
|
settings.protect_merge_whitelist_users = Whitelisted users for merging:
|
||||||
settings.protect_merge_whitelist_teams = Whitelisted teams for merging:
|
settings.protect_merge_whitelist_teams = Whitelisted teams for merging:
|
||||||
settings.protect_check_status_contexts = Enable Status Check
|
settings.protect_check_status_contexts = Enable Status Check
|
||||||
settings.protect_check_status_contexts_desc = Require status checks to pass before merging Choose which status checks must pass before branches can be merged into a branch that matches this rule. When enabled, commits must first be pushed to another branch, then merged or pushed directly to a branch that matches this rule after status checks have passed.
|
settings.protect_check_status_contexts_desc = Require status checks to pass before merging Choose which status checks must pass before branches can be merged into a branch that matches this rule. When enabled, commits must first be pushed to another branch, then merged or pushed directly to a branch that matches this rule after status checks have passed. If no contexts are selected, the last commit must be successful regardless of context.
|
||||||
settings.protect_check_status_contexts_list = Status checks found in the last week for this repository
|
settings.protect_check_status_contexts_list = Status checks found in the last week for this repository
|
||||||
settings.protect_required_approvals = Required approvals:
|
settings.protect_required_approvals = Required approvals:
|
||||||
settings.protect_required_approvals_desc = Allow only to merge pull request with enough positive reviews of whitelisted users or teams.
|
settings.protect_required_approvals_desc = Allow only to merge pull request with enough positive reviews of whitelisted users or teams.
|
||||||
|
|
|
@ -8,12 +8,20 @@ package pull
|
||||||
import (
|
import (
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/modules/git"
|
"code.gitea.io/gitea/modules/git"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
// IsCommitStatusContextSuccess returns true if all required status check contexts succeed.
|
// IsCommitStatusContextSuccess returns true if all required status check contexts succeed.
|
||||||
func IsCommitStatusContextSuccess(commitStatuses []*models.CommitStatus, requiredContexts []string) bool {
|
func IsCommitStatusContextSuccess(commitStatuses []*models.CommitStatus, requiredContexts []string) bool {
|
||||||
|
// If no specific context is required, require that last commit status is a success
|
||||||
|
if len(requiredContexts) == 0 {
|
||||||
|
status := models.CalcCommitStatus(commitStatuses)
|
||||||
|
if status == nil || status.State != models.CommitStatusSuccess {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
for _, ctx := range requiredContexts {
|
for _, ctx := range requiredContexts {
|
||||||
var found bool
|
var found bool
|
||||||
for _, commitStatus := range commitStatuses {
|
for _, commitStatus := range commitStatuses {
|
||||||
|
|
Reference in a new issue