diff options
Diffstat (limited to 'modules/git/tree_nogogit.go')
-rw-r--r-- | modules/git/tree_nogogit.go | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/modules/git/tree_nogogit.go b/modules/git/tree_nogogit.go index 7defb064a4..d61d19e4c2 100644 --- a/modules/git/tree_nogogit.go +++ b/modules/git/tree_nogogit.go @@ -99,13 +99,16 @@ func (t *Tree) ListEntries() (Entries, error) { return t.entries, err } -// ListEntriesRecursive returns all entries of current tree recursively including all subtrees -func (t *Tree) ListEntriesRecursive() (Entries, error) { +// listEntriesRecursive returns all entries of current tree recursively including all subtrees +// extraArgs could be "-l" to get the size, which is slower +func (t *Tree) listEntriesRecursive(extraArgs ...string) (Entries, error) { if t.entriesRecursiveParsed { return t.entriesRecursive, nil } - stdout, _, runErr := NewCommand(t.repo.Ctx, "ls-tree", "-t", "-l", "-r", t.ID.String()).RunStdBytes(&RunOpts{Dir: t.repo.Path}) + args := append([]string{"ls-tree", "-t", "-r"}, extraArgs...) + args = append(args, t.ID.String()) + stdout, _, runErr := NewCommand(t.repo.Ctx, args...).RunStdBytes(&RunOpts{Dir: t.repo.Path}) if runErr != nil { return nil, runErr } @@ -118,3 +121,13 @@ func (t *Tree) ListEntriesRecursive() (Entries, error) { return t.entriesRecursive, err } + +// ListEntriesRecursiveFast returns all entries of current tree recursively including all subtrees, no size +func (t *Tree) ListEntriesRecursiveFast() (Entries, error) { + return t.listEntriesRecursive() +} + +// ListEntriesRecursiveWithSize returns all entries of current tree recursively including all subtrees, with size +func (t *Tree) ListEntriesRecursiveWithSize() (Entries, error) { + return t.listEntriesRecursive("--long") +} |