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