aboutsummaryrefslogtreecommitdiff
path: root/object/tree/tree.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-06-13 16:30:31 +0000
committerGravatar Runxi Yu2026-06-13 16:30:31 +0000
commita6d0b99fd8dc28a47cee36f16890c66ea3acb746 (patch)
tree9f33b7385f20ccc90f5b899aefcf0f715ba2db00 /object/tree/tree.go
parentdeps: Update lgo (diff)
object/tree: Parse, entries, etc don't clone.
Diffstat (limited to 'object/tree/tree.go')
-rw-r--r--object/tree/tree.go16
1 files changed, 9 insertions, 7 deletions
diff --git a/object/tree/tree.go b/object/tree/tree.go
index 431df649..f40bb165 100644
--- a/object/tree/tree.go
+++ b/object/tree/tree.go
@@ -1,8 +1,6 @@
package tree
import (
- "slices"
-
"lindenii.org/go/furgit/object/id"
"lindenii.org/go/furgit/object/tree/mode"
)
@@ -21,15 +19,19 @@ type Tree struct {
// Entry represents a single entry in a tree.
type Entry struct {
Mode mode.Mode
- Name string
+ Name []byte
ID id.ObjectID
}
-// Entries returns a copy of the tree's entries in Git tree order.
+// Entries returns the tree's entries in Git tree order.
//
-// Mutating the returned slice does not affect the tree.
+// The returned slice aliases the tree's internal storage,
+// so it must not be mutated,
+// and it is invalidated by any subsequent call that mutates the tree,
+// such as [Tree.Insert].
+// Use [Tree.Clone] for an independent tree.
//
-// Labels: Life-Independent.
+// Labels: Life-Parent, Mut-No.
func (tree *Tree) Entries() []Entry {
- return slices.Clone(tree.entries)
+ return tree.entries
}