From ebeed316718cb126591bb79caa0c93e4db6e6f98 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Wed, 28 May 2025 04:11:17 +0800 Subject: [PATCH] fix status check in MergeRequiredContextsCommitStatus --- models/git/commit_status.go | 2 +- services/pull/commit_status.go | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/models/git/commit_status.go b/models/git/commit_status.go index efe922ca38..e8c080b130 100644 --- a/models/git/commit_status.go +++ b/models/git/commit_status.go @@ -237,7 +237,7 @@ func CalcCommitStatus(statuses []*CommitStatus) *CommitStatus { var lastStatus *CommitStatus state := api.CommitStatusSuccess for _, status := range statuses { - if status.State.HasHigherPriorityThan(state) { + if state == status.State || status.State.HasHigherPriorityThan(state) { state = status.State lastStatus = status } diff --git a/services/pull/commit_status.go b/services/pull/commit_status.go index a407d87113..f18274cde5 100644 --- a/services/pull/commit_status.go +++ b/services/pull/commit_status.go @@ -61,6 +61,11 @@ func MergeRequiredContextsCommitStatus(commitStatuses []*git_model.CommitStatus, if matchedCount == 0 && returnedStatus == structs.CommitStatusSuccess { status := git_model.CalcCommitStatus(commitStatuses) if status != nil { + // FIXME: this check is not right, "status" can never be nil, but its fields can be empty if commitStatuses is empty + // here is just a quick patch to make it overall right. + if status.State == "" || status.State == structs.CommitStatusSkipped { + return structs.CommitStatusSuccess + } return status.State } return structs.CommitStatusSuccess