aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plumbing/object/tree.go2
-rw-r--r--plumbing/object/tree_test.go3
2 files changed, 4 insertions, 1 deletions
diff --git a/plumbing/object/tree.go b/plumbing/object/tree.go
index 78d61a1..1f9ea26 100644
--- a/plumbing/object/tree.go
+++ b/plumbing/object/tree.go
@@ -135,7 +135,7 @@ func (t *Tree) FindEntry(path string) (*TreeEntry, error) {
pathCurrent := ""
// search for the longest path in the tree path cache
- for i := len(pathParts); i > 1; i-- {
+ for i := len(pathParts) - 1; i > 1; i-- {
path := filepath.Join(pathParts[:i]...)
tree, ok := t.t[path]
diff --git a/plumbing/object/tree_test.go b/plumbing/object/tree_test.go
index 889c63a..b408595 100644
--- a/plumbing/object/tree_test.go
+++ b/plumbing/object/tree_test.go
@@ -125,6 +125,9 @@ func (s *TreeSuite) TestFindEntryNotFound(c *C) {
e, err := s.Tree.FindEntry("not-found")
c.Assert(e, IsNil)
c.Assert(err, Equals, ErrEntryNotFound)
+ e, err = s.Tree.FindEntry("not-found/not-found/not-found")
+ c.Assert(e, IsNil)
+ c.Assert(err, Equals, ErrDirectoryNotFound)
}
// Overrides returned plumbing.EncodedObject for given hash.