diff --git a/modules/git/repo_commit_gogit.go b/modules/git/repo_commit_gogit.go index 14fec3f9c6bd0..5ccf8767cba46 100644 --- a/modules/git/repo_commit_gogit.go +++ b/modules/git/repo_commit_gogit.go @@ -8,7 +8,6 @@ package git import ( - "fmt" "strings" "github.com/go-git/go-git/v5/plumbing" @@ -68,38 +67,6 @@ func (repo *Repository) IsCommitExist(name string) bool { return err == nil } -func convertPGPSignatureForTag(t *object.Tag) *CommitGPGSignature { - if t.PGPSignature == "" { - return nil - } - - var w strings.Builder - var err error - - if _, err = fmt.Fprintf(&w, - "object %s\ntype %s\ntag %s\ntagger ", - t.Target.String(), t.TargetType.Bytes(), t.Name); err != nil { - return nil - } - - if err = t.Tagger.Encode(&w); err != nil { - return nil - } - - if _, err = fmt.Fprintf(&w, "\n\n"); err != nil { - return nil - } - - if _, err = fmt.Fprintf(&w, t.Message); err != nil { - return nil - } - - return &CommitGPGSignature{ - Signature: t.PGPSignature, - Payload: strings.TrimSpace(w.String()) + "\n", - } -} - func (repo *Repository) getCommit(id SHA1) (*Commit, error) { var tagObject *object.Tag @@ -112,6 +79,13 @@ func (repo *Repository) getCommit(id SHA1) (*Commit, error) { } } if err == nil { + tagObject.Message = strings.TrimSpace(tagObject.Message) + if tagObject.Message == "" { + tagObject.Message = tagObject.Name + } else if tagObject.Name != "" { + tagObject.Message = tagObject.Name + "\n\n" + tagObject.Message + } + gogitCommit, err = repo.gogitRepo.CommitObject(tagObject.Target) } // if we get a plumbing.ErrObjectNotFound here then the repository is broken and it should be 500 @@ -124,7 +98,7 @@ func (repo *Repository) getCommit(id SHA1) (*Commit, error) { commit.repo = repo if tagObject != nil { - commit.CommitMessage = strings.TrimSpace(tagObject.Message) + commit.CommitMessage = tagObject.Message commit.Author = &tagObject.Tagger commit.Signature = convertPGPSignatureForTag(tagObject) } diff --git a/modules/git/repo_commit_nogogit.go b/modules/git/repo_commit_nogogit.go index 13a7be778f583..7714b101fd848 100644 --- a/modules/git/repo_commit_nogogit.go +++ b/modules/git/repo_commit_nogogit.go @@ -108,7 +108,7 @@ func (repo *Repository) getCommitFromBatchReader(rd *bufio.Reader, id SHA1) (*Co return nil, err } - commit.CommitMessage = strings.TrimSpace(tag.Message) + commit.CommitMessage = tag.Message commit.Author = tag.Tagger commit.Signature = tag.Signature diff --git a/modules/git/repo_commit_test.go b/modules/git/repo_commit_test.go index 7b3a5101f2b36..87665c2404879 100644 --- a/modules/git/repo_commit_test.go +++ b/modules/git/repo_commit_test.go @@ -49,7 +49,7 @@ func TestGetTagCommitWithSignature(t *testing.T) { assert.NotNil(t, commit) assert.NotNil(t, commit.Signature) // test that signature is not in message - assert.Equal(t, "tag", commit.CommitMessage) + assert.Equal(t, "test\n\ntag", commit.CommitMessage) } func TestGetCommitWithBadCommitID(t *testing.T) { diff --git a/modules/git/repo_tag.go b/modules/git/repo_tag.go index 8585d824f91b1..fa16c1e530b5b 100644 --- a/modules/git/repo_tag.go +++ b/modules/git/repo_tag.go @@ -202,6 +202,13 @@ func parseTagRef(ref map[string]string) (tag *Tag, err error) { } } + tag.Message = strings.TrimSpace(tag.Message) + if tag.Message == "" { + tag.Message = tag.Name + } else if tag.Name != "" { + tag.Message = tag.Name + "\n\n" + tag.Message + } + return tag, nil } diff --git a/modules/git/repo_tag_nogogit.go b/modules/git/repo_tag_nogogit.go index 5d3aace52fdd7..46037dea528ac 100644 --- a/modules/git/repo_tag_nogogit.go +++ b/modules/git/repo_tag_nogogit.go @@ -123,7 +123,6 @@ func (repo *Repository) getTag(tagID SHA1, name string) (*Tag, error) { return nil, err } - tag.Name = name tag.ID = tagID tag.Type = tp diff --git a/modules/git/tag.go b/modules/git/tag.go index 3482f81e900dc..a11ddb51a2b05 100644 --- a/modules/git/tag.go +++ b/modules/git/tag.go @@ -57,6 +57,8 @@ l: case "type": // A commit can have one or more parents tag.Type = string(line[spacepos+1:]) + case "tag": + tag.Name = string(line[spacepos+1:]) case "tagger": sig, err := newSignatureFromCommitline(line[spacepos+1:]) if err != nil { @@ -83,6 +85,14 @@ l: tag.Message = tag.Message[:idx+1] } } + + tag.Message = strings.TrimSpace(tag.Message) + if tag.Message == "" { + tag.Message = tag.Name + } else if tag.Name != "" { + tag.Message = tag.Name + "\n\n" + tag.Message + } + return tag, nil } diff --git a/modules/git/tag_test.go b/modules/git/tag_test.go index e5f1660b8ef3c..dfce77e525be4 100644 --- a/modules/git/tag_test.go +++ b/modules/git/tag_test.go @@ -22,12 +22,12 @@ tag 1.22.0 tagger Lucas Michot 1484491741 +0100 `), tag: Tag{ - Name: "", + Name: "1.22.0", ID: SHA1{}, Object: SHA1{0x3b, 0x11, 0x4a, 0xb8, 0x0, 0xc6, 0x43, 0x2a, 0xd4, 0x23, 0x87, 0xcc, 0xf6, 0xbc, 0x8d, 0x43, 0x88, 0xa2, 0x88, 0x5a}, Type: "commit", Tagger: &Signature{Name: "Lucas Michot", Email: "lucas@semalead.com", When: time.Unix(1484491741, 0)}, - Message: "", + Message: "1.22.0", Signature: nil, }}, {data: []byte(`object 7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc @@ -39,12 +39,12 @@ test message o ono`), tag: Tag{ - Name: "", + Name: "1.22.1", ID: SHA1{}, Object: SHA1{0x7c, 0xdf, 0x42, 0xc0, 0xb1, 0xcc, 0x76, 0x3a, 0xb7, 0xe4, 0xc3, 0x3c, 0x47, 0xa2, 0x4e, 0x27, 0xc6, 0x6b, 0xfc, 0xcc}, Type: "commit", Tagger: &Signature{Name: "Lucas Michot", Email: "lucas@semalead.com", When: time.Unix(1484553735, 0)}, - Message: "test message\no\n\nono", + Message: "1.22.1\n\ntest message\no\n\nono", Signature: nil, }}, } diff --git a/tests/integration/api_repo_git_tags_test.go b/tests/integration/api_repo_git_tags_test.go index 3357f9568dbda..448ad8fc90bcf 100644 --- a/tests/integration/api_repo_git_tags_test.go +++ b/tests/integration/api_repo_git_tags_test.go @@ -54,7 +54,7 @@ func TestAPIGitTags(t *testing.T) { assert.Equal(t, aTagName, tag.Tag) assert.Equal(t, aTag.ID.String(), tag.SHA) assert.Equal(t, commit.ID.String(), tag.Object.SHA) - assert.Equal(t, aTagMessage+"\n", tag.Message) + assert.Equal(t, aTagName+"\n\n"+aTagMessage, tag.Message) assert.Equal(t, user.Name, tag.Tagger.Name) assert.Equal(t, user.Email, tag.Tagger.Email) assert.Equal(t, util.URLJoin(repo.APIURL(), "git/tags", aTag.ID.String()), tag.URL) diff --git a/tests/integration/api_repo_tags_test.go b/tests/integration/api_repo_tags_test.go index 5d3a209a767a0..4a83c2a48a6aa 100644 --- a/tests/integration/api_repo_tags_test.go +++ b/tests/integration/api_repo_tags_test.go @@ -35,7 +35,7 @@ func TestAPIRepoTags(t *testing.T) { assert.Len(t, tags, 1) assert.Equal(t, "v1.1", tags[0].Name) - assert.Equal(t, "Initial commit", tags[0].Message) + assert.Equal(t, "v1.1\n\nInitial commit", tags[0].Message) assert.Equal(t, "65f1bf27bc3bf70f64657658635e66094edbcb4d", tags[0].Commit.SHA) assert.Equal(t, setting.AppURL+"api/v1/repos/user2/repo1/git/commits/65f1bf27bc3bf70f64657658635e66094edbcb4d", tags[0].Commit.URL) assert.Equal(t, setting.AppURL+"user2/repo1/archive/v1.1.zip", tags[0].ZipballURL) @@ -49,7 +49,7 @@ func TestAPIRepoTags(t *testing.T) { if tag.Name != "v1.1" { assert.EqualValues(t, newTag.Name, tag.Name) assert.EqualValues(t, newTag.Message, tag.Message) - assert.EqualValues(t, "nice!\nand some text", tag.Message) + assert.EqualValues(t, "gitea/22\n\nnice!\nand some text", tag.Message) assert.EqualValues(t, newTag.Commit.SHA, tag.Commit.SHA) } }