aboutsummaryrefslogtreecommitdiff
path: root/object/tree/insert.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-28 16:33:14 +0000
committerGravatar Runxi Yu2026-03-28 16:33:14 +0000
commit060e5b7063ec282627dde96ac028f0d40cf05c60 (patch)
tree6a80e635a6c2f2955dfd97ab104103d6acdcf930 /object/tree/insert.go
parentobject/store/{loose,packed}: TIghten language around Adler-32 (diff)
signatureNo signature
object/tree: Update docs
Diffstat (limited to 'object/tree/insert.go')
-rw-r--r--object/tree/insert.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/object/tree/insert.go b/object/tree/insert.go
index bca4aa49..2da86514 100644
--- a/object/tree/insert.go
+++ b/object/tree/insert.go
@@ -6,11 +6,15 @@ import (
)
// InsertEntry inserts a tree entry while preserving Git ordering.
+//
+// InsertEntry copies newEntry.Name.
func (tree *Tree) InsertEntry(newEntry TreeEntry) error {
if tree.entry(newEntry.Name, true) != nil || tree.entry(newEntry.Name, false) != nil {
return fmt.Errorf("object: tree: entry %q already exists", newEntry.Name)
}
+ newEntry.Name = append([]byte(nil), newEntry.Name...)
+
newIsTree := newEntry.Mode == FileModeDir
insertAt := sort.Search(len(tree.Entries), func(i int) bool {
return TreeEntryNameCompare(tree.Entries[i].Name, tree.Entries[i].Mode, newEntry.Name, newIsTree) >= 0