From 31595765037b5ebb63578d1d267510c7322bbac6 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 15 Nov 2025 00:00:00 +0000 Subject: tree: Add Entry method (binary search over entries to get hash) --- obj_tree.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'obj_tree.go') diff --git a/obj_tree.go b/obj_tree.go index c78fd375..48121b0a 100644 --- a/obj_tree.go +++ b/obj_tree.go @@ -108,3 +108,20 @@ func (t *Tree) Serialize() ([]byte, error) { copy(raw[len(header):], body) return raw, nil } + +// Entry looks up a tree entry by name. +func (t *Tree) Entry(name []byte) *TreeEntry { + low, high := 0, len(t.Entries)-1 + for low <= high { + mid := (low + high) / 2 + cmp := bytes.Compare(t.Entries[mid].Name, name) + if cmp == 0 { + return &t.Entries[mid] + } else if cmp < 0 { + low = mid + 1 + } else { + high = mid - 1 + } + } + return nil +} -- cgit v1.3.1-10-gc9f91