This adds a step to the milestone trigger on rust-lang/rust to also milestone PRs in the cargo repo when the cargo submodule is updated. I have been manually running a script to do this for a few years, and I would like to stop needing to run it manually.
In terms of reviewing, the changes are roughly:
Moved the Issue::set_milestone code to separate GithubClient::get_or_create_milestone and GithubClient::set_milestone so that the milestones can be more easily and efficiently set in a batch (without needing an Issue object, and without querying for each PR).
milestone_prs now checks if the PR touches src/tools/cargo, and if it does, calls milestone_cargo to milestone every PR in the submodule update.
There is a new Repository::commits_in_range method for fetching commits within a SHA range. This is necessary to determine which PR each commit comes from.
I've done a little bit of testing, and it seems to work for master and beta updates, rollups, etc. However, I didn't do a full end-to-end test, since that would require receiving events from rust-lang/rust which I cannot do.
This adds a step to the milestone trigger on rust-lang/rust to also milestone PRs in the cargo repo when the cargo submodule is updated. I have been manually running a script to do this for a few years, and I would like to stop needing to run it manually.
In terms of reviewing, the changes are roughly:
Issue::set_milestone
code to separateGithubClient::get_or_create_milestone
andGithubClient::set_milestone
so that the milestones can be more easily and efficiently set in a batch (without needing anIssue
object, and without querying for each PR).milestone_prs
now checks if the PR touchessrc/tools/cargo
, and if it does, callsmilestone_cargo
to milestone every PR in the submodule update.Repository::commits_in_range
method for fetching commits within a SHA range. This is necessary to determine which PR each commit comes from.I've done a little bit of testing, and it seems to work for master and beta updates, rollups, etc. However, I didn't do a full end-to-end test, since that would require receiving events from rust-lang/rust which I cannot do.