From 5c471c34813577a420c1a5af61dd855f70badce1 Mon Sep 17 00:00:00 2001 From: Jeremy Stribling Date: Thu, 11 Oct 2018 16:28:19 -0700 Subject: tree: add a Size() method for getting plaintext size Without reading the entire object into memory. Signed-off-by: Jeremy Stribling --- plumbing/object/tree.go | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'plumbing/object/tree.go') diff --git a/plumbing/object/tree.go b/plumbing/object/tree.go index c36a137..78d61a1 100644 --- a/plumbing/object/tree.go +++ b/plumbing/object/tree.go @@ -87,6 +87,17 @@ func (t *Tree) File(path string) (*File, error) { return NewFile(path, e.Mode, blob), nil } +// Size returns the plaintext size of an object, without reading it +// into memory. +func (t *Tree) Size(path string) (int64, error) { + e, err := t.FindEntry(path) + if err != nil { + return 0, ErrEntryNotFound + } + + return t.s.EncodedObjectSize(e.Hash) +} + // Tree returns the tree identified by the `path` argument. // The path is interpreted as relative to the tree receiver. func (t *Tree) Tree(path string) (*Tree, error) { -- cgit