Files
simplegit/gitcmd/history.go
T
2026-07-15 11:06:48 -04:00

41 lines
796 B
Go

package gitcmd
import (
"strconv"
"strings"
)
func (r *Repository) ListCommitsByPath(ref, path string, limit int) ([]Commit, error) {
if empty, err := r.IsEmpty(); err != nil {
return nil, err
} else if empty {
return []Commit{}, nil
}
if ref == "" {
ref = "HEAD"
}
cmd := NewCommand("log", "--follow").
Add("--format=%H%x1f%h%x1f%s%x1f%an%x1f%ae%x1f%aI%x1f%P").
WithDir(r.Path)
if limit > 0 {
cmd.Add("-n", strconv.Itoa(limit))
}
cmd.AddDynamicArguments(ref)
cmd.AddDashesAndList(path)
out, _, err := cmd.RunStdString(r.ctx)
if err != nil {
return nil, err
}
var commits []Commit
for _, line := range strings.Split(strings.TrimSpace(out), "\n") {
if line == "" {
continue
}
commits = append(commits, *parseCommitLine(line))
}
return commits, nil
}