Revert repos pagination for GH and BB (#5924)

This commit is contained in:
qwerty287
2026-01-08 12:32:32 +01:00
committed by GitHub
parent 2c82972f33
commit 2f0684f502
4 changed files with 31 additions and 24 deletions

View File

@@ -181,6 +181,12 @@ func (c *config) Repo(ctx context.Context, u *model.User, remoteID model.ForgeRe
// Repos returns a list of all repositories for Bitbucket account, including
// organization repositories.
func (c *config) Repos(ctx context.Context, u *model.User, p *model.ListOptions) ([]*model.Repo, error) {
// we paginate internally (https://github.com/woodpecker-ci/woodpecker/issues/5667)
// we merge data from different sources
if p.Page != 1 {
return nil, nil
}
setListOptions(p)
client := c.newClient(ctx, u)

View File

@@ -31,7 +31,6 @@ const (
hookPullUpdated = "pullrequest:updated"
hookPullMerged = "pullrequest:fulfilled"
hookPullDeclined = "pullrequest:rejected"
stateOpen = "OPEN"
stateClosed = "MERGED"
stateDeclined = "DECLINED"
)

View File

@@ -226,22 +226,30 @@ func (c *client) Repo(ctx context.Context, u *model.User, id model.ForgeRemoteID
// Repos returns a list of all repositories for GitHub account, including
// organization repositories.
func (c *client) Repos(ctx context.Context, u *model.User, p *model.ListOptions) ([]*model.Repo, error) {
client := c.newClientToken(ctx, u.AccessToken)
list, _, err := client.Repositories.ListByAuthenticatedUser(ctx, &github.RepositoryListByAuthenticatedUserOptions{
ListOptions: github.ListOptions{
Page: p.Page,
PerPage: perPage(p.PerPage),
},
})
if err != nil {
return nil, err
// we paginate internally (https://github.com/woodpecker-ci/woodpecker/issues/5667)
if p.Page != 1 {
return nil, nil
}
repos := make([]*model.Repo, 0, len(list))
for _, repo := range list {
if repo.GetArchived() {
continue
client := c.newClientToken(ctx, u.AccessToken)
opts := new(github.RepositoryListByAuthenticatedUserOptions)
opts.PerPage = 100
opts.Page = 1
var repos []*model.Repo
for opts.Page > 0 {
list, resp, err := client.Repositories.ListByAuthenticatedUser(ctx, opts)
if err != nil {
return nil, err
}
repos = append(repos, convertRepo(repo))
for _, repo := range list {
if repo.GetArchived() {
continue
}
repos = append(repos, convertRepo(repo))
}
opts.Page = resp.NextPage
}
return repos, nil
}
@@ -301,7 +309,7 @@ func (c *client) Dir(ctx context.Context, u *model.User, r *model.Repo, b *model
var files []*forge_types.FileMeta
for i := 0; i < len(data); i++ {
for range data {
select {
case err := <-errChan:
return nil, err

View File

@@ -199,10 +199,7 @@ func (g *GitLab) Teams(ctx context.Context, user *model.User, p *model.ListOptio
return nil, err
}
perPage := p.PerPage
if perPage > defaultPerPage {
perPage = defaultPerPage
}
perPage := min(p.PerPage, defaultPerPage)
groups, _, err := client.Groups.ListGroups(&gitlab.ListGroupsOptions{
ListOptions: gitlab.ListOptions{
@@ -294,10 +291,7 @@ func (g *GitLab) Repos(ctx context.Context, user *model.User, p *model.ListOptio
return nil, err
}
perPage := p.PerPage
if perPage > defaultPerPage {
perPage = defaultPerPage
}
perPage := min(p.PerPage, defaultPerPage)
opts := &gitlab.ListProjectsOptions{
ListOptions: gitlab.ListOptions{