aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing/object/file.go
diff options
context:
space:
mode:
authorJeremy Stribling <strib@alum.mit.edu>2017-08-25 13:52:07 -0700
committerJeremy Stribling <strib@alum.mit.edu>2017-08-27 17:14:49 -0700
commitd68f45f8aaca461167907c07e8c161be14e87157 (patch)
tree1fecddbe0c384ab077e5588321362a672f0e9fc4 /plumbing/object/file.go
parent631a45f55b397090ad7d817a3c72041cfc3729f3 (diff)
downloadgo-git-d68f45f8aaca461167907c07e8c161be14e87157.tar.gz
plumbing: use `seen` map in tree walker
This helps avoids iterating down the same trees for every commit. For a big-ish repo with 35K objects (17K commits), this reduced the time for calling `revlist.Objects` during a push (with 0 hashes to ignore) from more than ten minutes to less than a minute.
Diffstat (limited to 'plumbing/object/file.go')
-rw-r--r--plumbing/object/file.go2
1 files changed, 1 insertions, 1 deletions
diff --git a/plumbing/object/file.go b/plumbing/object/file.go
index 79f57fe..40b5206 100644
--- a/plumbing/object/file.go
+++ b/plumbing/object/file.go
@@ -81,7 +81,7 @@ type FileIter struct {
// NewFileIter takes a storer.EncodedObjectStorer and a Tree and returns a
// *FileIter that iterates over all files contained in the tree, recursively.
func NewFileIter(s storer.EncodedObjectStorer, t *Tree) *FileIter {
- return &FileIter{s: s, w: *NewTreeWalker(t, true)}
+ return &FileIter{s: s, w: *NewTreeWalker(t, true, nil)}
}
// Next moves the iterator to the next file and returns a pointer to it. If