From 9ef659a016d4ffeac931291984a4c71f9527a747 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Fri, 14 Nov 2025 00:00:00 +0000 Subject: Read types and sizes without inflating entire object --- obj.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'obj.go') diff --git a/obj.go b/obj.go index 5ce639f9..d3d69c25 100644 --- a/obj.go +++ b/obj.go @@ -117,3 +117,22 @@ func (repo *Repository) ReadObject(id Hash) (Object, error) { } return obj, err } + +// ReadObjectTypeSize reports the object type and size without inflating the body. +func (repo *Repository) ReadObjectTypeSize(id Hash) (ObjType, int64, error) { + ty, size, err := repo.looseTypeSize(id) + if err == nil { + return ty, size, nil + } + if !errors.Is(err, ErrNotFound) { + return ObjInvalid, 0, err + } + loc, err := repo.packIndexFind(id) + if err != nil { + if errors.Is(err, ErrNotFound) { + return ObjInvalid, 0, ErrInvalidObject + } + return ObjInvalid, 0, err + } + return repo.packTypeSizeAtLocation(loc, nil) +} -- cgit v1.3.1-10-gc9f91