diff --git a/server/remote/gitea/gitea.go b/server/remote/gitea/gitea.go index 193d23ee1..d35f08d65 100644 --- a/server/remote/gitea/gitea.go +++ b/server/remote/gitea/gitea.go @@ -462,15 +462,29 @@ func (c *Gitea) Branches(ctx context.Context, u *model.User, r *model.Repo) ([]s return nil, err } - giteaBranches, _, err := client.ListRepoBranches(r.Owner, r.Name, gitea.ListRepoBranchesOptions{}) - if err != nil { - return nil, err + branches := make([]string, 0) + + page := 1 + + for { + giteaBranches, _, err := client.ListRepoBranches(r.Owner, r.Name, gitea.ListRepoBranchesOptions{ + ListOptions: gitea.ListOptions{ + Page: page, + }, + }) + if err != nil { + return nil, err + } + if len(giteaBranches) > 0 { + for _, branch := range giteaBranches { + branches = append(branches, branch.Name) + } + page++ + } else { + break + } } - branches := make([]string, 0) - for _, branch := range giteaBranches { - branches = append(branches, branch.Name) - } return branches, nil } diff --git a/server/remote/remote.go b/server/remote/remote.go index 0141da83e..35ea9d189 100644 --- a/server/remote/remote.go +++ b/server/remote/remote.go @@ -75,6 +75,7 @@ type Remote interface { Deactivate(ctx context.Context, u *model.User, r *model.Repo, link string) error // Branches returns the names of all branches for the named repository. + // TODO: Add proper pagination handling and remove workaround in gitea remote Branches(ctx context.Context, u *model.User, r *model.Repo) ([]string, error) // BranchHead returns the sha of the head (lastest commit) of the specified branch