From f54ee6d2b1f92d67ed567027f7a8ec1f2139c532 Mon Sep 17 00:00:00 2001 From: Saeed Rasooli Date: Fri, 29 Nov 2019 13:25:05 +0330 Subject: add NewCommitPathIterFromIter that accepts pathFilter func(string) bool keep NewCommitFileIterFromIter for compatibilty for now Signed-off-by: Saeed Rasooli --- repository.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'repository.go') diff --git a/repository.go b/repository.go index 11269ef..2bb2afb 100644 --- a/repository.go +++ b/repository.go @@ -1099,7 +1099,13 @@ 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) logWithLimit(commitIter object.CommitIter, limitOptions object.LogLimitOptions) object.CommitIter { -- cgit From 224f047f4f95b44434f84303746c37439929e02b Mon Sep 17 00:00:00 2001 From: Saeed Rasooli Date: Fri, 29 Nov 2019 13:39:29 +0330 Subject: add `PathFilter func(string) bool` to LogOptions Signed-off-by: Saeed Rasooli --- repository.go | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'repository.go') diff --git a/repository.go b/repository.go index 2bb2afb..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} @@ -1108,6 +1111,14 @@ func (*Repository) logWithFile(fileName string, commitIter object.CommitIter, ch ) } +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 { return object.NewCommitLimitIterFromIter(commitIter, limitOptions) } -- cgit