Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not ignore staged PRs #66

Open
wants to merge 20 commits into
base: master
Choose a base branch
from

Conversation

eduard-bagdasaryan
Copy link
Contributor

@eduard-bagdasaryan eduard-bagdasaryan commented Feb 26, 2024

The recently added 265a79a optimization relied on PR::updated_at field
to track all PR-related changes. However, this proved to be wrong: for
example, PR or staged commit statuses do not update this field. Now we
get the missing information from incoming GitHub events.

Also do not ignore 'clearedForMerge' PRs: such PRs may be ready for
merge without additional GitHub activity.

Initial (untested) implementation.
@eduard-bagdasaryan eduard-bagdasaryan marked this pull request as draft February 26, 2024 14:58
Tested and fixed several errors.
Such PR may be ready for merge and do not expect
any activity/events before it gets merged.
@eduard-bagdasaryan eduard-bagdasaryan marked this pull request as ready for review March 4, 2024 15:02
Added logging and toString() conversions for PR numbers.
The previous approach could often result in situations when the
optimization is discarded. It assumed that in most cases PR head SHA
would stay the same across two PR scans (usually several minutes), but
we cannot rely on that.  Now we use PR branches instead for events<->PRs
mapping.
It proved to be that these events have an empty 'pull_requests'
array for staged commits. To overcome this, we compile an array
of {sha, prNum} pairs for the staging branch and map an event's
sha to the PR number.
The previous approach was incorrect because the staged branch
does not contain all the required commits for mapping to PR numbers
(in fact, it has only one, head commit that is useful).
There is no other way to approach this than to request the commit
info from GitHub (entailing one extra API call). But, fortunately,
the situation when we cannot extract this info from the current PR
should be quite rare (i.e, the situation where there have been more
than one staging branch commits during the previous PR scan).
We cannot rely on the 40-character check because branches can be easily
a string of that length, but in a format allowed by GitHub (i.e., not in
the '40 characters containing only 0-9 and A-F' format).  The
new PrId class should provide the required functionality to
distinguish three PR ID types: SHAs, branches and PR numbers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant