summaryrefslogtreecommitdiffstats
path: root/modules/git/commit.go
diff options
context:
space:
mode:
authorMatthew Walowski <mattwalowski@gmail.com>2023-05-08 00:10:53 -0700
committerGitHub <noreply@github.com>2023-05-08 07:10:53 +0000
commitff5629268c5c01d3f460570baa571baef3f896cd (patch)
treed0e85b7ca946b93bc7d74d30436aabcebb59dc27 /modules/git/commit.go
parente962ade99cfd0471273f3dcf956c7cd222472758 (diff)
downloadgitea-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.go36
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