diff options
| author | 2025-11-15 00:00:00 +0000 | |
|---|---|---|
| committer | 2025-11-15 00:00:00 +0000 | |
| commit | 31595765037b5ebb63578d1d267510c7322bbac6 (patch) | |
| tree | 0f107705b0d44a9314f116f07987761b27430152 | |
| parent | Other forges if interested (diff) | |
| signature | ||
tree: Add Entry method (binary search over entries to get hash)
| -rw-r--r-- | obj_tree.go | 17 |
1 files changed, 17 insertions, 0 deletions
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 +} |
