Skip to content

Commit 476eedb

Browse files
authored
Merge pull request #537 from Prucek/review-blocks
tide: changes requested block merge when branch protection requires reviews
2 parents c1b4d92 + c2a947a commit 476eedb

File tree

4 files changed

+547
-5
lines changed

4 files changed

+547
-5
lines changed

pkg/tide/github.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -632,6 +632,11 @@ func (m *mergeChecker) isAllowedToMerge(crc *CodeReviewCommon) (string, error) {
632632
} else if !allowed {
633633
return fmt.Sprintf("Merge type %q disallowed by repo settings", *mergeMethod), nil
634634
}
635+
// Check GitHub's mergeStateStatus which reflects all GitHub-side merge blocking conditions
636+
// including branch protection rules, rulesets, required reviews, status checks, etc.
637+
if pr.MergeStateStatus == "BLOCKED" {
638+
return "PR is blocked from merging by GitHub (check branch protection, required reviews, or rulesets)", nil
639+
}
635640
return "", nil
636641
}
637642

pkg/tide/status.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,13 +253,19 @@ func requirementDiff(pr *PullRequest, q *config.TideQuery, cc contextChecker) (s
253253
desc = fmt.Sprintf(" Jobs %s have not succeeded.", strings.Join(trunced, ", "))
254254
}
255255
}
256-
257256
if q.ReviewApprovedRequired && pr.ReviewDecision != githubql.PullRequestReviewDecisionApproved {
258257
diff += 50
259258
if desc == "" {
260259
desc = " PullRequest is missing sufficient approving GitHub review(s)"
261260
}
262261
}
262+
// Check GitHub's mergeStateStatus which reflects all GitHub-side blocking conditions
263+
if pr.MergeStateStatus == "BLOCKED" {
264+
diff += 100
265+
if desc == "" {
266+
desc = " Blocked by GitHub (branch rulesets or protection)"
267+
}
268+
}
263269
return desc, diff
264270
}
265271

0 commit comments

Comments
 (0)