Mergifyio / mergify

Mergify Community Issue Tracker
https://mergify.com
Apache License 2.0
318 stars 91 forks source link

Allow dismiss_reviews only on non-rebase updates #5052

Open Sidnioulz opened 1 year ago

Sidnioulz commented 1 year ago

Expected Behavior

An option for dismiss_review's when that only triggers when commits are added to a PR's head, but not when it is rebased (in other words, only accounting for changes made on commits not on the target branch).

Why? We use approvals on A/B branches to indicate that they have been reviewed, before triggering a release, which then allows other tools to run the A/B test down the line. We then want the reviews to be dismissed if the PR is updated with new changes, but we still want the branch to keep being released and used when the main branch is updated, so that it stays up to date.

With approvals dismissed on rebase, it's necessary to manually reapprove. If approvals could be dismissed only on non-rebase changes, our model could be implemented.

Actual Behavior

Not possible at the moment. Rebases trigger dismiss_review.

Steps to Reproduce the Problem

  1. Create config with dismiss_reviews and when set to either allowed value
  2. Open a PR, approve it
  3. Rebase the PR, notice approvals are gone

Specifications

jd commented 1 year ago

The main issue is that rebasing a branch changes all the sha1, so there's no way to know if the rebase introduced new commits, new content or not.

Sidnioulz commented 1 year ago

Would it be acceptable to have it heuristics based? Do you have access to new/old diffs and messages, or only hashes, in this code path?