Fast implementation of Git in pure Go
1package objectheader
2
3import (
4 "strconv"
5
6 "codeberg.org/lindenii/furgit/objecttype"
7)
8
9// Append appends a canonical loose-object header ("type size\\x00") to dst.
10func Append(dst []byte, ty objecttype.Type, size int64) ([]byte, bool) {
11 if size < 0 {
12 return nil, false
13 }
14
15 tyName, ok := objecttype.Name(ty)
16 if !ok {
17 return nil, false
18 }
19
20 sizeStr := strconv.FormatInt(size, 10)
21 out := make([]byte, 0, len(dst)+len(tyName)+len(sizeStr)+2)
22 out = append(out, dst...)
23 out = append(out, tyName...)
24 out = append(out, ' ')
25 out = append(out, sizeStr...)
26 out = append(out, 0)
27
28 return out, true
29}