Fix pushed date loading for PRs with large merges #493
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.
When GitHub does not propagate pushed dates to the PR APIs in time, we fall back to the repository commit APIs to load the dates instead. Previously, we stopped iterating through commit history as soon as we loaded enough pages of commits (with 100 commits per page) to account for the number of input commits.
For PRs with large merge commits from the target branch, the commits included by the merge appear in the branch history, but not in the pull request. This caused the loop to exit before listing enough history and return an error claiming commits were missing.
This was usually a temporary error because re-evaluating the PR would find the pushed dates using the PR APIs and not fallback.
To fix this, iterate through commit history until we find all input commits or run out of history on the branch. The commits should always be present, but there may be edge cases that lead to the full listing. I could not think of a way to avoid the full listing without imposing some arbitrary constraint on the size of merges.