1
0
Fork 0

Rename CommitGPGSignature to ObjectSignature

`CommitGPGSignature` was originally made to store information about a
commit's GPG signature. Nowadays, it is used to store information about
SSH signatures too, and not just commit signatures, but tag signatures
too.

As such, rename it to `ObjectSignature`, because that describes what it
does a whole lot better.

Signed-off-by: Gergely Nagy <forgejo@gergo.csillger.hu>
This commit is contained in:
Gergely Nagy 2024-02-29 09:44:35 +01:00 committed by oliverpool
parent 8fdffc94ca
commit 40c357bbc5
9 changed files with 26 additions and 21 deletions

View file

@ -40,7 +40,7 @@ func TestParseCommitWithSSHSignature(t *testing.T) {
Committer: &git.Signature{ Committer: &git.Signature{
Email: "non-existent", Email: "non-existent",
}, },
Signature: &git.CommitGPGSignature{ Signature: &git.ObjectSignature{
Payload: `tree 2d491b2985a7ff848d5c02748e7ea9f9f7619f9f Payload: `tree 2d491b2985a7ff848d5c02748e7ea9f9f7619f9f
parent 45b03601635a1f463b81963a4022c7f87ce96ef9 parent 45b03601635a1f463b81963a4022c7f87ce96ef9
author user2 <non-existent> 1699710556 +0100 author user2 <non-existent> 1699710556 +0100
@ -67,7 +67,7 @@ AAAAQIMufOuSjZeDUujrkVK4sl7ICa0WwEftas8UAYxx0Thdkiw2qWjR1U1PKfTLm16/w8
Committer: &git.Signature{ Committer: &git.Signature{
Email: "user2@example.com", Email: "user2@example.com",
}, },
Signature: &git.CommitGPGSignature{ Signature: &git.ObjectSignature{
Payload: `tree 853694aae8816094a0d875fee7ea26278dbf5d0f Payload: `tree 853694aae8816094a0d875fee7ea26278dbf5d0f
parent c2780d5c313da2a947eae22efd7dacf4213f4e7f parent c2780d5c313da2a947eae22efd7dacf4213f4e7f
author user2 <user2@example.com> 1699707877 +0100 author user2 <user2@example.com> 1699707877 +0100
@ -89,7 +89,7 @@ Add content
Committer: &git.Signature{ Committer: &git.Signature{
Email: "user2@example.com", Email: "user2@example.com",
}, },
Signature: &git.CommitGPGSignature{ Signature: &git.ObjectSignature{
Payload: `tree 853694aae8816094a0d875fee7ea26278dbf5d0f Payload: `tree 853694aae8816094a0d875fee7ea26278dbf5d0f
parent c2780d5c313da2a947eae22efd7dacf4213f4e7f parent c2780d5c313da2a947eae22efd7dacf4213f4e7f
author user2 <user2@example.com> 1699707877 +0100 author user2 <user2@example.com> 1699707877 +0100
@ -120,7 +120,7 @@ fs9cMpZVM9BfIKNUSO8QY=
Committer: &git.Signature{ Committer: &git.Signature{
Email: "user2@noreply.example.com", Email: "user2@noreply.example.com",
}, },
Signature: &git.CommitGPGSignature{ Signature: &git.ObjectSignature{
Payload: `tree 4836c7f639f37388bab4050ef5c97bbbd54272fc Payload: `tree 4836c7f639f37388bab4050ef5c97bbbd54272fc
parent 795be1b0117ea5c65456050bb9fd84744d4fd9c6 parent 795be1b0117ea5c65456050bb9fd84744d4fd9c6
author user2 <user2@noreply.example.com> 1699709594 +0100 author user2 <user2@noreply.example.com> 1699709594 +0100

View file

@ -25,18 +25,12 @@ type Commit struct {
Author *Signature Author *Signature
Committer *Signature Committer *Signature
CommitMessage string CommitMessage string
Signature *CommitGPGSignature Signature *ObjectSignature
Parents []ObjectID // ID strings Parents []ObjectID // ID strings
submoduleCache *ObjectCache submoduleCache *ObjectCache
} }
// CommitGPGSignature represents a git commit signature part.
type CommitGPGSignature struct {
Signature string
Payload string // TODO check if can be reconstruct from the rest of commit information to not have duplicate data
}
// Message returns the commit message. Same as retrieving CommitMessage directly. // Message returns the commit message. Same as retrieving CommitMessage directly.
func (c *Commit) Message() string { func (c *Commit) Message() string {
return c.CommitMessage return c.CommitMessage

View file

@ -13,7 +13,7 @@ import (
"github.com/go-git/go-git/v5/plumbing/object" "github.com/go-git/go-git/v5/plumbing/object"
) )
func convertPGPSignature(c *object.Commit) *CommitGPGSignature { func convertPGPSignature(c *object.Commit) *ObjectSignature {
if c.PGPSignature == "" { if c.PGPSignature == "" {
return nil return nil
} }
@ -51,7 +51,7 @@ func convertPGPSignature(c *object.Commit) *CommitGPGSignature {
return nil return nil
} }
return &CommitGPGSignature{ return &ObjectSignature{
Signature: c.PGPSignature, Signature: c.PGPSignature,
Payload: w.String(), Payload: w.String(),
} }

View file

@ -97,7 +97,7 @@ readLoop:
} }
} }
commit.CommitMessage = messageSB.String() commit.CommitMessage = messageSB.String()
commit.Signature = &CommitGPGSignature{ commit.Signature = &ObjectSignature{
Signature: signatureSB.String(), Signature: signatureSB.String(),
Payload: payloadSB.String(), Payload: payloadSB.String(),
} }

View file

@ -0,0 +1,11 @@
// Copyright 2015 The Gogs Authors. All rights reserved.
// Copyright 2019 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package git
// ObjectSignature represents a git object (commit, tag) signature part.
type ObjectSignature struct {
Signature string
Payload string // TODO check if can be reconstruct from the rest of commit information to not have duplicate data
}

View file

@ -196,11 +196,11 @@ func parseTagRef(ref map[string]string) (tag *Tag, err error) {
} }
} }
// annotated tag with GPG signature // annotated tag with signature
if tag.Type == "tag" && ref["contents:signature"] != "" { if tag.Type == "tag" && ref["contents:signature"] != "" {
payload := fmt.Sprintf("object %s\ntype commit\ntag %s\ntagger %s\n\n%s\n", payload := fmt.Sprintf("object %s\ntype commit\ntag %s\ntagger %s\n\n%s\n",
tag.Object, tag.Name, ref["creator"], strings.TrimSpace(tag.Message)) tag.Object, tag.Name, ref["creator"], strings.TrimSpace(tag.Message))
tag.Signature = &CommitGPGSignature{ tag.Signature = &ObjectSignature{
Signature: ref["contents:signature"], Signature: ref["contents:signature"],
Payload: payload, Payload: payload,
} }

View file

@ -315,7 +315,7 @@ qbHDASXl
Type: "tag", Type: "tag",
Tagger: parseSignatureFromCommitLine("Foo Bar <foo@bar.com> 1565789218 +0300"), Tagger: parseSignatureFromCommitLine("Foo Bar <foo@bar.com> 1565789218 +0300"),
Message: "Add changelog of v1.9.1 (#7859)\n\n* add changelog of v1.9.1\n* Update CHANGELOG.md", Message: "Add changelog of v1.9.1 (#7859)\n\n* add changelog of v1.9.1\n* Update CHANGELOG.md",
Signature: &CommitGPGSignature{ Signature: &ObjectSignature{
Signature: `-----BEGIN PGP SIGNATURE----- Signature: `-----BEGIN PGP SIGNATURE-----
aBCGzBAABCgAdFiEEyWRwv/q1Q6IjSv+D4IPOwzt33PoFAmI8jbIACgkQ4IPOwzt3 aBCGzBAABCgAdFiEEyWRwv/q1Q6IjSv+D4IPOwzt33PoFAmI8jbIACgkQ4IPOwzt3

View file

@ -26,7 +26,7 @@ type Tag struct {
Type string Type string
Tagger *Signature Tagger *Signature
Message string Message string
Signature *CommitGPGSignature Signature *ObjectSignature
} }
// Commit return the commit of the tag reference // Commit return the commit of the tag reference
@ -74,7 +74,7 @@ l:
} }
} }
extractTagSignature := func(signatureBeginMark, signatureEndMark string) (bool, *CommitGPGSignature, string) { extractTagSignature := func(signatureBeginMark, signatureEndMark string) (bool, *ObjectSignature, string) {
idx := strings.LastIndex(tag.Message, signatureBeginMark) idx := strings.LastIndex(tag.Message, signatureBeginMark)
if idx == -1 { if idx == -1 {
return false, nil, "" return false, nil, ""
@ -85,7 +85,7 @@ l:
return false, nil, "" return false, nil, ""
} }
return true, &CommitGPGSignature{ return true, &ObjectSignature{
Signature: tag.Message[idx+1 : idx+endSigIdx+len(signatureEndMark)], Signature: tag.Message[idx+1 : idx+endSigIdx+len(signatureEndMark)],
Payload: string(data[:bytes.LastIndex(data, []byte(signatureBeginMark))+1]), Payload: string(data[:bytes.LastIndex(data, []byte(signatureBeginMark))+1]),
}, tag.Message[:idx+1] }, tag.Message[:idx+1]

View file

@ -65,7 +65,7 @@ AAAAQKFeTnxi9ssRqSg+sJcmjAgpgoPq1k5SXm306+mJmkPwvhim8f9Gz6uy1AddPmXaD7
Type: "commit", Type: "commit",
Tagger: &Signature{Name: "Jane Doe", Email: "jane.doe@example.com", When: time.Unix(1709146405, 0)}, Tagger: &Signature{Name: "Jane Doe", Email: "jane.doe@example.com", When: time.Unix(1709146405, 0)},
Message: "v0\n", Message: "v0\n",
Signature: &CommitGPGSignature{ Signature: &ObjectSignature{
Signature: `-----BEGIN SSH SIGNATURE----- Signature: `-----BEGIN SSH SIGNATURE-----
U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgvD4pK7baygXxoWoVoKjVEc/xZh U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgvD4pK7baygXxoWoVoKjVEc/xZh
6w+1FUn5hypFqJXNAAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 6w+1FUn5hypFqJXNAAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5