From 92e95d907d2b88c10d7fd790806e1a1e9bedfda2 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Thu, 2 Apr 2026 09:08:15 +0000 Subject: object/signature: Rename Serialize to Bytes --- object/signature/bytes.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 object/signature/bytes.go (limited to 'object/signature/bytes.go') diff --git a/object/signature/bytes.go b/object/signature/bytes.go new file mode 100644 index 00000000..0afff5e0 --- /dev/null +++ b/object/signature/bytes.go @@ -0,0 +1,33 @@ +package signature + +import ( + "fmt" + "strconv" + "strings" +) + +// Bytes renders the signature in canonical Git format. +func (signature Signature) Bytes() ([]byte, error) { + var b strings.Builder + b.Grow(len(signature.Name) + len(signature.Email) + 32) + b.Write(signature.Name) + b.WriteString(" <") + b.Write(signature.Email) + b.WriteString("> ") + b.WriteString(strconv.FormatInt(signature.WhenUnix, 10)) + b.WriteByte(' ') + + offset := signature.OffsetMinutes + + sign := '+' + if offset < 0 { + sign = '-' + offset = -offset + } + + hh := offset / 60 + mm := offset % 60 + fmt.Fprintf(&b, "%c%02d%02d", sign, hh, mm) + + return []byte(b.String()), nil +} -- cgit v1.3.1-10-gc9f91