summaryrefslogtreecommitdiffstats
path: root/modules/git
diff options
context:
space:
mode:
Diffstat (limited to 'modules/git')
-rw-r--r--modules/git/commit.go10
-rw-r--r--modules/git/repo.go5
2 files changed, 15 insertions, 0 deletions
diff --git a/modules/git/commit.go b/modules/git/commit.go
index 45b943e79e..ce55dd55f6 100644
--- a/modules/git/commit.go
+++ b/modules/git/commit.go
@@ -248,6 +248,16 @@ func CommitChanges(repoPath string, opts CommitChangesOptions) error {
return err
}
+// AllCommitsCount returns count of all commits in repository
+func AllCommitsCount(repoPath string) (int64, error) {
+ stdout, err := NewCommand("rev-list", "--all", "--count").RunInDir(repoPath)
+ if err != nil {
+ return 0, err
+ }
+
+ return strconv.ParseInt(strings.TrimSpace(stdout), 10, 64)
+}
+
func commitsCount(repoPath, revision, relpath string) (int64, error) {
cmd := NewCommand("rev-list", "--count")
cmd.AddArguments(revision)
diff --git a/modules/git/repo.go b/modules/git/repo.go
index e1d75ca4aa..4c6690b913 100644
--- a/modules/git/repo.go
+++ b/modules/git/repo.go
@@ -46,6 +46,11 @@ type GPGSettings struct {
const prettyLogFormat = `--pretty=format:%H`
+// GetAllCommitsCount returns count of all commits in repository
+func (repo *Repository) GetAllCommitsCount() (int64, error) {
+ return AllCommitsCount(repo.Path)
+}
+
func (repo *Repository) parsePrettyFormatLogToList(logs []byte) (*list.List, error) {
l := list.New()
if len(logs) == 0 {