forked from gitea/gitea
backport #29143 Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
parent
c01b266d86
commit
78f41e4fc4
|
@ -635,6 +635,24 @@ func PrepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *git.C
|
||||||
}
|
}
|
||||||
|
|
||||||
if pb != nil && pb.EnableStatusCheck {
|
if pb != nil && pb.EnableStatusCheck {
|
||||||
|
|
||||||
|
var missingRequiredChecks []string
|
||||||
|
for _, requiredContext := range pb.StatusCheckContexts {
|
||||||
|
contextFound := false
|
||||||
|
matchesRequiredContext := createRequiredContextMatcher(requiredContext)
|
||||||
|
for _, presentStatus := range commitStatuses {
|
||||||
|
if matchesRequiredContext(presentStatus.Context) {
|
||||||
|
contextFound = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !contextFound {
|
||||||
|
missingRequiredChecks = append(missingRequiredChecks, requiredContext)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ctx.Data["MissingRequiredChecks"] = missingRequiredChecks
|
||||||
|
|
||||||
ctx.Data["is_context_required"] = func(context string) bool {
|
ctx.Data["is_context_required"] = func(context string) bool {
|
||||||
for _, c := range pb.StatusCheckContexts {
|
for _, c := range pb.StatusCheckContexts {
|
||||||
if c == context {
|
if c == context {
|
||||||
|
@ -703,6 +721,18 @@ func PrepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *git.C
|
||||||
return compareInfo
|
return compareInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func createRequiredContextMatcher(requiredContext string) func(string) bool {
|
||||||
|
if gp, err := glob.Compile(requiredContext); err == nil {
|
||||||
|
return func(contextToCheck string) bool {
|
||||||
|
return gp.Match(contextToCheck)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return func(contextToCheck string) bool {
|
||||||
|
return requiredContext == contextToCheck
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type pullCommitList struct {
|
type pullCommitList struct {
|
||||||
Commits []pull_service.CommitInfo `json:"commits"`
|
Commits []pull_service.CommitInfo `json:"commits"`
|
||||||
LastReviewCommitSha string `json:"last_review_commit_sha"`
|
LastReviewCommitSha string `json:"last_review_commit_sha"`
|
||||||
|
|
|
@ -50,6 +50,10 @@ func MergeRequiredContextsCommitStatus(commitStatuses []*git_model.CommitStatus,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if matchedCount != len(requiredContexts) {
|
||||||
|
return structs.CommitStatusPending
|
||||||
|
}
|
||||||
|
|
||||||
if matchedCount == 0 {
|
if matchedCount == 0 {
|
||||||
status := git_model.CalcCommitStatus(commitStatuses)
|
status := git_model.CalcCommitStatus(commitStatuses)
|
||||||
if status != nil {
|
if status != nil {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{{if $.LatestCommitStatus}}
|
{{if $.LatestCommitStatus}}
|
||||||
{{if not $.Issue.PullRequest.HasMerged}}
|
{{if not $.Issue.PullRequest.HasMerged}}
|
||||||
<div class="ui top attached header">
|
<div class="ui top attached header">
|
||||||
{{if eq .LatestCommitStatus.State "pending"}}
|
{{if or (eq .LatestCommitStatus.State "pending") (.MissingRequiredChecks)}}
|
||||||
{{ctx.Locale.Tr "repo.pulls.status_checking"}}
|
{{ctx.Locale.Tr "repo.pulls.status_checking"}}
|
||||||
{{else if eq .LatestCommitStatus.State "success"}}
|
{{else if eq .LatestCommitStatus.State "success"}}
|
||||||
{{ctx.Locale.Tr "repo.pulls.status_checks_success"}}
|
{{ctx.Locale.Tr "repo.pulls.status_checks_success"}}
|
||||||
|
@ -31,4 +31,15 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
{{range .MissingRequiredChecks}}
|
||||||
|
<div class="ui attached segment pr-status">
|
||||||
|
{{svg "octicon-dot-fill" 18 "commit-status icon text yellow"}}
|
||||||
|
<div class="status-context">
|
||||||
|
<span>{{.}}</span>
|
||||||
|
<div class="ui status-details">
|
||||||
|
<div class="ui label">{{ctx.Locale.Tr "repo.pulls.status_checks_requested"}}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
Loading…
Reference in New Issue