diff options
author | Elias Norberg <elias@aisle.se> | 2019-09-30 04:33:40 +0200 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2019-09-30 10:33:40 +0800 |
commit | 668d3d02aa0222c839e42bc2608ad1fa05b8640b (patch) | |
tree | af433d57ee30c76fa12303a873b15a0ed7d4b3b1 | |
parent | 0d2566b5608461e782d9e257a731afa753ab4a06 (diff) | |
download | gitea-668d3d02aa0222c839e42bc2608ad1fa05b8640b.tar.gz gitea-668d3d02aa0222c839e42bc2608ad1fa05b8640b.zip |
If no specific context is required for status check, require an overall success (#8318)
Signed-off-by: Elias Norberg <elias@aisle.se>
-rw-r--r-- | options/locale/locale_en-US.ini | 2 | ||||
-rw-r--r-- | services/pull/commit_status.go | 10 |
2 files changed, 10 insertions, 2 deletions
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 7bb4539684..938c53af3f 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -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_teams = Whitelisted teams for merging: 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_required_approvals = Required approvals: settings.protect_required_approvals_desc = Allow only to merge pull request with enough positive reviews of whitelisted users or teams. diff --git a/services/pull/commit_status.go b/services/pull/commit_status.go index bdadc329d6..2872db7bd2 100644 --- a/services/pull/commit_status.go +++ b/services/pull/commit_status.go @@ -8,12 +8,20 @@ package pull import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "github.com/pkg/errors" ) // IsCommitStatusContextSuccess returns true if all required status check contexts succeed. 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 { var found bool for _, commitStatus := range commitStatuses { |