Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds an optimization and simplification for getting the diff of a PR. Previously, triagebot would fetch the
/compare
endpoint three times for every PR (for auto-assignment, auto-labels, and mentions). This changes it so that it only fetches it once, and caches the result in thePullRequestDetails
.This also changes it so that the diff gets parsed early on, instead of having every caller parse it. This should help make it a little more structured. Thus,
diff()
returns aVec<FileDiff>
, where each element is a single file.A walkthrough to help reviewing this PR:
FileDiff
type to represent a diff to a single file.PullRequestDetails
adds aOnceCell
to cache the PR diff.Issue.diff()
now returns a parsed result (instead of just a string), and caches the result.files_changed
was changed toparse_diff
to return a structured format.Issue.diff()
were updated to use the new format.assign.rs
input handler was changed to fetch the diff inhandle_input
instead ofparse_input
, due to not being able to pass a reference (and it wasn't important which function it was called in).