forked from Gitlink/gitea_hat
34 lines
810 B
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
|
|
}
|