diff options
| author | 2025-11-16 00:00:00 +0000 | |
|---|---|---|
| committer | 2025-11-16 00:00:00 +0000 | |
| commit | d944abb28ea70d98d36598a1f30c3738a431013e (patch) | |
| tree | 23347a489b7668cbc2d754ecc2c010acfde0b7d0 | |
| parent | Rename ObjType -> ObjectType (diff) | |
| signature | ||
All Serialize should be able to error out
| -rw-r--r-- | ident.go | 4 | ||||
| -rw-r--r-- | obj_commit.go | 21 | ||||
| -rw-r--r-- | obj_tag.go | 6 |
3 files changed, 23 insertions, 8 deletions
@@ -94,7 +94,7 @@ func parseIdent(line []byte) (*Ident, error) { } // Serialize renders an Ident into canonical Git format. -func (ident Ident) Serialize() []byte { +func (ident Ident) Serialize() ([]byte, error) { var b strings.Builder b.Grow(len(ident.Name) + len(ident.Email) + 32) b.Write(ident.Name) @@ -113,7 +113,7 @@ func (ident Ident) Serialize() []byte { hh := offset / 60 mm := offset % 60 fmt.Fprintf(&b, "%c%02d%02d", sign, hh, mm) - return []byte(b.String()) + return []byte(b.String()), nil } // When returns the timestamp as time.Time using the embedded offset. diff --git a/obj_commit.go b/obj_commit.go index 8abb363f..2b87322f 100644 --- a/obj_commit.go +++ b/obj_commit.go @@ -91,27 +91,38 @@ func parseCommit(id Hash, body []byte, repo *Repository) (*Commit, error) { return c, nil } -func commitBody(c *Commit) []byte { +func commitBody(c *Commit) ([]byte, error) { var buf bytes.Buffer fmt.Fprintf(&buf, "tree %s\n", c.Tree.String()) for _, p := range c.Parents { fmt.Fprintf(&buf, "parent %s\n", p.String()) } buf.WriteString("author ") - buf.Write(c.Author.Serialize()) + ab, err := c.Author.Serialize() + if err != nil { + return nil, err + } + buf.Write(ab) buf.WriteByte('\n') buf.WriteString("committer ") - buf.Write(c.Committer.Serialize()) + cb, err := c.Committer.Serialize() + if err != nil { + return nil, err + } + buf.Write(cb) buf.WriteByte('\n') buf.WriteByte('\n') buf.Write(c.Message) - return buf.Bytes() + return buf.Bytes(), nil } // Serialize renders a Commit into canonical Git format. func (commit *Commit) Serialize() ([]byte, error) { - body := commitBody(commit) + body, err := commitBody(commit) + if err != nil { + return nil, err + } header, err := headerForType(ObjCommit, body) if err != nil { return nil, err @@ -118,7 +118,11 @@ func tagBody(t *Tag) ([]byte, error) { buf.WriteByte('\n') if t.Tagger != nil { buf.WriteString("tagger ") - buf.Write(t.Tagger.Serialize()) + tb, err := t.Tagger.Serialize() + if err != nil { + return nil, err + } + buf.Write(tb) buf.WriteByte('\n') } buf.WriteByte('\n') |
