diff options
Diffstat (limited to 'tree_walker.go')
-rw-r--r-- | tree_walker.go | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/tree_walker.go b/tree_walker.go index 3272718..ff44e67 100644 --- a/tree_walker.go +++ b/tree_walker.go @@ -3,8 +3,6 @@ package git import ( "io" "path" - - "gopkg.in/src-d/go-git.v3/core" ) const ( @@ -40,7 +38,7 @@ func NewTreeWalker(r *Repository, t *Tree) *TreeWalker { // In the current implementation any objects which cannot be found in the // underlying repository will be skipped automatically. It is possible that this // may change in future versions. -func (w *TreeWalker) Next() (name string, entry TreeEntry, obj core.Object, err error) { +func (w *TreeWalker) Next() (name string, entry TreeEntry, obj Object, err error) { for { current := len(w.stack) - 1 if current < 0 { @@ -66,10 +64,11 @@ func (w *TreeWalker) Next() (name string, entry TreeEntry, obj core.Object, err return } - obj, err = w.r.Storage.Get(entry.Hash) - if err == core.ObjectNotFoundErr { + obj, err = w.r.Object(entry.Hash) + if err == ObjectNotFoundErr { // FIXME: Avoid doing this here in case the caller actually cares about // missing objects. + err = nil continue // ignore entries without hash (= submodule dirs) } @@ -82,12 +81,7 @@ func (w *TreeWalker) Next() (name string, entry TreeEntry, obj core.Object, err break } - if obj.Type() == core.TreeObject { - tree := &Tree{r: w.r} - err = tree.Decode(obj) - if err != nil { - return - } + if tree, ok := obj.(*Tree); ok { w.stack = append(w.stack, *NewTreeEntryIter(tree)) w.base = path.Join(w.base, entry.Name) } |