From 3130a1c523951aba64eadf216695e8acd8251378 Mon Sep 17 00:00:00 2001 From: "[X]" <1896292+ennetech@users.noreply.github.com> Date: Thu, 6 Oct 2022 19:52:12 +0200 Subject: [PATCH] Fetch all branches from gitea (#1231) Both repo branch view and manual branch selector were limited to the stock pageSize of gitea client. this add a loop to fetch all branches from gitea --- server/remote/gitea/gitea.go | 28 +++++++++++++++++++++------- server/remote/remote.go | 1 + 2 files changed, 22 insertions(+), 7 deletions(-) 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