diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2020-03-10 00:02:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-10 00:02:14 +0100 |
commit | eef67789e846acc85e1ed2af2760d6716b2a9f07 (patch) | |
tree | b3578068aca7e71d27fda254d919e6e0ad9e90ba /repository.go | |
parent | 87d3d897d903af9cdd5cf500fd36d3533235fc02 (diff) | |
parent | 027dadf289dcf974405d283d13d5a856b0988b38 (diff) | |
download | go-git-eef67789e846acc85e1ed2af2760d6716b2a9f07.tar.gz |
Merge pull request #3 from go-git/pr-1248
git.LogOptions: add `PathFilter func(string) bool`
Diffstat (limited to 'repository.go')
-rw-r--r-- | repository.go | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/repository.go b/repository.go index 11269ef..1e3e339 100644 --- a/repository.go +++ b/repository.go @@ -1067,6 +1067,9 @@ func (r *Repository) Log(o *LogOptions) (object.CommitIter, error) { // for `git log --all` also check parent (if the next commit comes from the real parent) it = r.logWithFile(*o.FileName, it, o.All) } + if o.PathFilter != nil { + it = r.logWithPathFilter(o.PathFilter, it, o.All) + } if o.Since != nil || o.Until != nil { limitOptions := object.LogLimitOptions{Since: o.Since, Until: o.Until} @@ -1099,7 +1102,21 @@ func (r *Repository) logAll(commitIterFunc func(*object.Commit) object.CommitIte } func (*Repository) logWithFile(fileName string, commitIter object.CommitIter, checkParent bool) object.CommitIter { - return object.NewCommitFileIterFromIter(fileName, commitIter, checkParent) + return object.NewCommitPathIterFromIter( + func(path string) bool { + return path == fileName + }, + commitIter, + checkParent, + ) +} + +func (*Repository) logWithPathFilter(pathFilter func(string) bool, commitIter object.CommitIter, checkParent bool) object.CommitIter { + return object.NewCommitPathIterFromIter( + pathFilter, + commitIter, + checkParent, + ) } func (*Repository) logWithLimit(commitIter object.CommitIter, limitOptions object.LogLimitOptions) object.CommitIter { |