3.9 KiB
PR#32: open hints hold the automerge of a GREEN pull request
WARNING: This document describes only the change applied in this PR. It may already be outdated once the next PR is merged. Historic PR documentation is not maintained along with new PRs; treat it as a snapshot.
The Problem
With [gate] automerge = true, werkrevisor 0.20.0 approves a GREEN pull request and schedules its merge at once.
A GREEN review can still hold hints: findings of low severity or doubted by Jev, posted as line comments.
Nobody gets a chance to answer them: PR#30 was merged 4 seconds after its GREEN review,
and its 3 hints went into PR#31 as additional changes.
Non-Goals
- No change for YELLOW and ORANGE: a human approves them after reading the hints.
- No change of the verdict: a GREEN review with hints stays GREEN and approves.
- No new trigger for a review: the operator restarts the review build in Werkator, or the author pushes a commit.
The Scenarios
Feature: open hints hold the automerge
Scenario#32.01: a GREEN review with open hints approves, but schedules no merge
So that the author can answer the hints before the merge.
- Given
[gate] automerge = true - When werkrevisor reviews a head with the verdict GREEN and 2 hints as line comments
- Then the bot approves the head
- and it schedules no merge, and cancels a merge scheduled for an earlier head
- and the result comment says that the merge waits for 2 open hints
Verified by
Scenario#32.02: a restarted review schedules the merge once all hints are resolved
So that the author can close the hints without a new commit.
- Given werkrevisor reviewed the head with GREEN and posted 2 hints as line comments
- and the author replied to both and resolved them
- When the review of the same head runs again
- Then the bot schedules the merge
Verified by
Scenario#32.03: the hold can be switched off
So that a repository can keep the merge at GREEN without waiting.
- Given
[gate] hints_hold_merge = false - When werkrevisor reviews a head with the verdict GREEN and 2 hints as line comments
- Then the bot approves and schedules the merge, as before
Verified by
The Solution
[gate] hints_hold_merge, defaulttrue, applies withautomerge: at GREEN, werkrevisor counts the unresolved line comments of the bot, from this and earlier rounds, and the findings of this review that are no line comment, e.g. because Gitea refused them; a restart reuses the verdict without findings, so it releases the latter.- With open line comments, the bot approves, schedules no merge and cancels a merge scheduled earlier
(
DELETE /pulls/{n}/merge, a 404 means none was scheduled); the gate note, also a failed cancel, goes into the commit status and the result comment; a failed cancel ends the review with exit code 10, so the failed gate check stops the merge scheduled earlier; so do line comments that cannot be read, since unknown hints must not release the merge. - A review of the same head, e.g. after a restart of its Werkator build, reuses the verdict, finds no open line comment and schedules the merge; it posts a short comment with its gate note, since the result comment names the first review, unless the merge was already scheduled.
- An unresolved line comment of an earlier round also holds the merge after a new commit; the author resolves it once it is answered or obsolete.
- werkrevisor 0.20.1.
Prerequisite PRs
- PR#31: excerpt selection by a cheap model.