RFR: 1584: Require re-review of a PR if the target branch changes [v3]
Erik Helin
ehelin at openjdk.org
Fri Oct 7 12:13:24 UTC 2022
On Tue, 4 Oct 2022 18:16:09 GMT, Erik Joelsson <erikj at openjdk.org> wrote:
>> This change improves reviewer handling when the target branch of a PR is changed. Currently this only invalidates a review on GitHub, but not on GitLab. With this change the behavior is made uniform. In addition to this, the following new behavior is added.
>>
>> 1. When the target branch of a PR is changed, any existing reviews in the Reviewers list will be flagged as "Re-review required (review applies to pull request targeting <branch>)" to make what happened clearer.
>> 2. If the target branch of a PR is changed back to a previously targeted branch, any reviews made against that branch may now become valid again (if all other requirements are met).
>>
>> Note that changes to and from pr/X branches are ignored, just like before.
>>
>> PullRequest::reviews is no longer specifying the order of reviews returned. This order was actually not consistent between implementations and I would rather we use explicit sorts when needed instead of assuming an order.
>>
>> I'm not really happy with the placement of the new static method `calculateReviewTargetRefs`, but I couldn't really find a better location, and I really wanted to share this between different `PullRequest` implementations. I think the correct solution would be to introduce an `AbstractPullRequest` common super class, but I didn't want to do this for a single method.
>>
>> I have verified this with the new and modified tests, as well as by running against the playground repo(s).
>
> Erik Joelsson has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains three commits:
>
> - Merge branch 'master' into SKARA-1584-rereview-targetref
> - Merge branch 'master' into SKARA-1584-rereview-targetref
> - SKARA-1584
This patch looks good, just some stylistic nits.
I don't really mind the static method, in general I prefer that over an abstract base class. I personally think that an abstract base class makes it so much harder to follow the control flow in sub-classes, whereas now it is very clear in `GitLabMergeRequest` and `GitHubPullRequest` how the static helper method is used.
bots/pr/src/main/java/org/openjdk/skara/bots/pr/CheckRun.java line 505:
> 503: if (!review.targetRef().equals(pr.targetRef())) {
> 504: entry += " 🔄 Re-review required (review applies to pull request targeting [" + review.targetRef()
> 505: + "](" + pr.repository().webUrl(new Branch(review.targetRef())) + "))";
I would probably have phrased this as `"Re-review required (review was made when pull request targeted the " + review.targetRef() + " branch)";`, but that is just my style 😸
forge/src/main/java/org/openjdk/skara/forge/RefChange.java line 5:
> 3: import java.time.ZonedDateTime;
> 4:
> 5: public record RefChange(String prevRefName, String curRefName, ZonedDateTime createdAt) {
Again, I'm more for shorter names, so I would have gone with `ReferenceChange(String from, String to, ZonedDateTime at)`
forge/src/main/java/org/openjdk/skara/forge/Review.java line 52:
> 50: }
> 51:
> 52: public Review(Review other, String targetRef) {
I would probably have used a static method like `public static Review withTargetRef(Review r, String targetRef)` or potentially have a instance method `public Review withTargetRef(String targetRef)`.
-------------
Marked as reviewed by ehelin (Reviewer).
PR: https://git.openjdk.org/skara/pull/1383
More information about the skara-dev
mailing list