From 241f2549238cf0f551c192bb8d6c73d94396826b Mon Sep 17 00:00:00 2001 From: Kasi Date: Tue, 8 Jan 2019 18:36:21 +0000 Subject: [PATCH] Fixed a bug where TreeEntries were getting cached, (thanks @filipnavara) --- tree.go | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/tree.go b/tree.go index b67bf5584..b65fe1940 100644 --- a/tree.go +++ b/tree.go @@ -18,6 +18,9 @@ type Tree struct { entries Entries entriesParsed bool + + entriesRecursive Entries + entriesRecursiveParsed bool } // NewTree create a new tree according the repository and commit id @@ -67,20 +70,29 @@ func (t *Tree) ListEntries() (Entries, error) { if err != nil { return nil, err } + t.entries, err = parseTreeEntries(stdout, t) + if err == nil { + t.entriesParsed = true + } + return t.entries, err } // ListEntriesRecursive returns all entries of current tree recursively including all subtrees func (t *Tree) ListEntriesRecursive() (Entries, error) { - if t.entriesParsed { - return t.entries, nil + if t.entriesRecursiveParsed { + return t.entriesRecursive, nil } stdout, err := NewCommand("ls-tree", "-t", "-r", t.ID.String()).RunInDirBytes(t.repo.Path) - if err != nil { return nil, err } - t.entries, err = parseTreeEntries(stdout, t) - return t.entries, err + + t.entriesRecursive, err = parseTreeEntries(stdout, t) + if err == nil { + t.entriesRecursiveParsed = true + } + + return t.entriesRecursive, err }