aboutsummaryrefslogtreecommitdiff
path: root/object/tree_serialize.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-04 08:26:56 +0800
committerGravatar Runxi Yu2026-03-04 08:59:53 +0800
commitab7501be34032fb9e5c48726a68ae90a917af9eb (patch)
tree20d005647569befea8133e953c3270e8fd2a2a5b /object/tree_serialize.go
parent*: gofumpt (diff)
signatureNo signature
*: Lint
Diffstat (limited to 'object/tree_serialize.go')
-rw-r--r--object/tree_serialize.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/object/tree_serialize.go b/object/tree_serialize.go
index 5c10bef6..42f60f72 100644
--- a/object/tree_serialize.go
+++ b/object/tree_serialize.go
@@ -11,6 +11,7 @@ import (
// SerializeWithoutHeader renders the raw tree body bytes.
func (tree *Tree) SerializeWithoutHeader() ([]byte, error) {
var bodyLen int
+
for _, entry := range tree.Entries {
mode := strconv.FormatUint(uint64(entry.Mode), 8)
bodyLen += len(mode) + 1 + len(entry.Name) + 1 + entry.ID.Size()
@@ -18,6 +19,7 @@ func (tree *Tree) SerializeWithoutHeader() ([]byte, error) {
body := make([]byte, bodyLen)
pos := 0
+
for _, entry := range tree.Entries {
mode := strconv.FormatUint(uint64(entry.Mode), 8)
pos += copy(body[pos:], mode)
@@ -39,12 +41,15 @@ func (tree *Tree) SerializeWithHeader() ([]byte, error) {
if err != nil {
return nil, err
}
+
header, ok := objectheader.Encode(objecttype.TypeTree, int64(len(body)))
if !ok {
return nil, errors.New("object: tree: failed to encode object header")
}
+
raw := make([]byte, len(header)+len(body))
copy(raw, header)
copy(raw[len(header):], body)
+
return raw, nil
}