diff options
author | Matthew Walowski <mattwalowski@gmail.com> | 2023-05-08 00:10:53 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-08 07:10:53 +0000 |
commit | ff5629268c5c01d3f460570baa571baef3f896cd (patch) | |
tree | d0e85b7ca946b93bc7d74d30436aabcebb59dc27 /modules/git/commit.go | |
parent | e962ade99cfd0471273f3dcf956c7cd222472758 (diff) | |
download | gitea-ff5629268c5c01d3f460570baa571baef3f896cd.tar.gz gitea-ff5629268c5c01d3f460570baa571baef3f896cd.zip |
Pass 'not' to commit count (#24473)
Due to #24409 , we can now specify '--not' when getting all commits from
a repo to exclude commits from a different branch.
When I wrote that PR, I forgot to also update the code that counts the
number of commits in the repo. So now, if the --not option is used, it
may return too many commits, which can indicate that another page of
data is available when it is not.
This PR passes --not to the commands that count the number of commits in
a repo
Diffstat (limited to 'modules/git/commit.go')
-rw-r--r-- | modules/git/commit.go | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/modules/git/commit.go b/modules/git/commit.go index f28c315cb5..ff654f394d 100644 --- a/modules/git/commit.go +++ b/modules/git/commit.go @@ -160,15 +160,29 @@ func AllCommitsCount(ctx context.Context, repoPath string, hidePRRefs bool, file return strconv.ParseInt(strings.TrimSpace(stdout), 10, 64) } -// CommitsCountFiles returns number of total commits of until given revision. -func CommitsCountFiles(ctx context.Context, repoPath string, revision, relpath []string) (int64, error) { +// CommitsCountOptions the options when counting commits +type CommitsCountOptions struct { + RepoPath string + Not string + Revision []string + RelPath []string +} + +// CommitsCount returns number of total commits of until given revision. +func CommitsCount(ctx context.Context, opts CommitsCountOptions) (int64, error) { cmd := NewCommand(ctx, "rev-list", "--count") - cmd.AddDynamicArguments(revision...) - if len(relpath) > 0 { - cmd.AddDashesAndList(relpath...) + + cmd.AddDynamicArguments(opts.Revision...) + + if opts.Not != "" { + cmd.AddOptionValues("--not", opts.Not) } - stdout, _, err := cmd.RunStdString(&RunOpts{Dir: repoPath}) + if len(opts.RelPath) > 0 { + cmd.AddDashesAndList(opts.RelPath...) + } + + stdout, _, err := cmd.RunStdString(&RunOpts{Dir: opts.RepoPath}) if err != nil { return 0, err } @@ -176,14 +190,12 @@ func CommitsCountFiles(ctx context.Context, repoPath string, revision, relpath [ return strconv.ParseInt(strings.TrimSpace(stdout), 10, 64) } -// CommitsCount returns number of total commits of until given revision. -func CommitsCount(ctx context.Context, repoPath string, revision ...string) (int64, error) { - return CommitsCountFiles(ctx, repoPath, revision, []string{}) -} - // CommitsCount returns number of total commits of until current revision. func (c *Commit) CommitsCount() (int64, error) { - return CommitsCount(c.repo.Ctx, c.repo.Path, c.ID.String()) + return CommitsCount(c.repo.Ctx, CommitsCountOptions{ + RepoPath: c.repo.Path, + Revision: []string{c.ID.String()}, + }) } // CommitsByRange returns the specific page commits before current revision, every page's number default by CommitsRangeSize |