mirror of
https://github.com/samsonjs/retrogit.git
synced 2026-04-27 15:07:43 +00:00
Handle pagination in commit listing.
This commit is contained in:
parent
f81e06b9de
commit
63fe7b619c
1 changed files with 28 additions and 16 deletions
|
|
@ -193,24 +193,36 @@ func (digest *Digest) fetch(githubClient *github.Client) error {
|
||||||
for _, intervalDigest := range digest.IntervalDigests {
|
for _, intervalDigest := range digest.IntervalDigests {
|
||||||
for _, repo := range intervalDigest.repos {
|
for _, repo := range intervalDigest.repos {
|
||||||
go func(intervalDigest *IntervalDigest, repo *Repo) {
|
go func(intervalDigest *IntervalDigest, repo *Repo) {
|
||||||
commits, _, err := githubClient.Repositories.ListCommits(
|
commits := make([]github.RepositoryCommit, 0)
|
||||||
|
page := 1
|
||||||
|
for {
|
||||||
|
pageCommits, response, err := githubClient.Repositories.ListCommits(
|
||||||
*repo.Owner.Login,
|
*repo.Owner.Login,
|
||||||
*repo.Name,
|
*repo.Name,
|
||||||
&github.CommitsListOptions{
|
&github.CommitsListOptions{
|
||||||
ListOptions: github.ListOptions{PerPage: 100},
|
ListOptions: github.ListOptions{
|
||||||
|
Page: page,
|
||||||
|
PerPage: 100,
|
||||||
|
},
|
||||||
Author: *digest.User.Login,
|
Author: *digest.User.Login,
|
||||||
Since: intervalDigest.StartTime.UTC(),
|
Since: intervalDigest.StartTime.UTC(),
|
||||||
Until: intervalDigest.EndTime.UTC(),
|
Until: intervalDigest.EndTime.UTC(),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ch <- &RepoDigestResponse{nil, nil, err}
|
ch <- &RepoDigestResponse{nil, nil, err}
|
||||||
} else {
|
return
|
||||||
|
}
|
||||||
|
commits = append(commits, pageCommits...)
|
||||||
|
if response.NextPage == 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
page = response.NextPage
|
||||||
|
}
|
||||||
digestCommits := make([]DigestCommit, len(commits))
|
digestCommits := make([]DigestCommit, len(commits))
|
||||||
for i := range commits {
|
for i := range commits {
|
||||||
digestCommits[len(commits)-i-1] = newDigestCommit(&commits[i], repo, digest.TimezoneLocation)
|
digestCommits[len(commits)-i-1] = newDigestCommit(&commits[i], repo, digest.TimezoneLocation)
|
||||||
}
|
}
|
||||||
ch <- &RepoDigestResponse{intervalDigest, &RepoDigest{repo, digestCommits}, nil}
|
ch <- &RepoDigestResponse{intervalDigest, &RepoDigest{repo, digestCommits}, nil}
|
||||||
}
|
|
||||||
}(intervalDigest, repo)
|
}(intervalDigest, repo)
|
||||||
fetchCount++
|
fetchCount++
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue