gitea_hat/modules/git/repo_commit.go

34 lines
810 B
Go

package git
import (
"bytes"
gitea_git "code.gitea.io/gitea/modules/git"
)
const prettyLogFormat = `--pretty=format:%H`
func GetFirstAndLastCommitByPath(repo *gitea_git.Repository, revision, relpath string) (*gitea_git.Commit, *gitea_git.Commit, error) {
stdout, _, runErr := gitea_git.NewCommand(repo.Ctx, "log", revision, prettyLogFormat, "--", relpath).RunStdBytes(&gitea_git.RunOpts{Dir: repo.Path})
if runErr != nil {
return nil, nil, runErr
}
var commits []*gitea_git.Commit
if len(stdout) == 0 {
return nil, nil, nil
}
parts := bytes.Split(stdout, []byte{'\n'})
for _, commitID := range parts {
commit, err := repo.GetCommit(string(commitID))
if err != nil {
return nil, nil, err
}
commits = append(commits, commit)
}
return commits[0], commits[len(commits)-1], nil
}