Block an MR when a reviewer requests changes
Problem to Solve
In the initial implementation of request changes
the behavior is informative only and non-blocking. This is good as it allows reviewers to make it clear what the status of their review is, but it doesn't prevent the developer or another reviewer from ignoring the changes and just merging the changes anyway.
Proposal
There should be some kind of merge check that understands that changes have been requested and blocks the merge until it's been resolved or acknowledged.
Additional Details
- We add a new merge check that looks for the existence of anyone who has requested changes (no setting, it's just a default behavior)
- In the new merge widget that shows all the reasons a merge request is block we add that someone has requested changes (this would be similar to the thread control)
- Provide an option in the line of the merge check that allows anyone with merge rights (so more restrictive than who can resolve threads) the ability to "bypass" or "ignore" (wording TBD) the change request... 2x click action (modal or something) that makes sure it's clear what they're doing.
Unknown: How do we control the state, if someone ignores the request changes, and then another review happens and requests changes... what happens? Maybe it needs to work on the same cadence as approval resets?