diff options
Diffstat (limited to 'vendor/github.com/gogs/git-module/repo_commit.go')
-rw-r--r-- | vendor/github.com/gogs/git-module/repo_commit.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/vendor/github.com/gogs/git-module/repo_commit.go b/vendor/github.com/gogs/git-module/repo_commit.go index 6b629d4d..1ac03387 100644 --- a/vendor/github.com/gogs/git-module/repo_commit.go +++ b/vendor/github.com/gogs/git-module/repo_commit.go @@ -10,6 +10,7 @@ import ( "fmt" "strconv" "strings" + "time" "github.com/mcuadros/go-version" ) @@ -379,3 +380,34 @@ func (repo *Repository) getCommitsBeforeLimit(id sha1, num int) (*list.List, err l := list.New() return l, repo.commitsBefore(l, nil, id, 1, num) } + +// CommitsAfterDate returns a list of commits which committed after given date. +// The format of date should be in RFC3339. +func (repo *Repository) CommitsAfterDate(date string) (*list.List, error) { + stdout, err := NewCommand("log", _PRETTY_LOG_FORMAT, "--since="+date).RunInDirBytes(repo.Path) + if err != nil { + return nil, err + } + + return repo.parsePrettyFormatLogToList(stdout) +} + +// CommitsCount returns number of total commits of until given revision. +func CommitsCount(repoPath, revision string) (int64, error) { + return commitsCount(repoPath, revision, "") +} + +// GetLatestCommitDate returns the date of latest commit of repository. +// If branch is empty, it returns the latest commit across all branches. +func GetLatestCommitDate(repoPath, branch string) (time.Time, error) { + cmd := NewCommand("for-each-ref", "--count=1", "--sort=-committerdate", "--format=%(committerdate:iso8601)") + if len(branch) > 0 { + cmd.AddArguments("refs/heads/" + branch) + } + stdout, err := cmd.RunInDir(repoPath) + if err != nil { + return time.Time{}, err + } + + return time.Parse("2006-01-02 15:04:05 -0700", strings.TrimSpace(stdout)) +} |