Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix commit retrieval by tag #21804

Merged
merged 26 commits into from
Mar 2, 2023
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
8e00e25
Fix commit retrieval by tag
silverwind Nov 13, 2022
e66e2c2
fix import
silverwind Nov 13, 2022
c793f0f
attempt to fix tests
silverwind Nov 13, 2022
6b14736
fix TestRepository_GetTags
silverwind Nov 13, 2022
c595251
fix TestRepository_GetCodeActivityStats
silverwind Nov 13, 2022
82c00c1
fix TestRepository_GetRefs
silverwind Nov 13, 2022
0ee518d
fix TestGetLatestCommitTime
silverwind Nov 13, 2022
e92fff6
update comment
silverwind Nov 13, 2022
854170e
fix TestGetTagCommitWithSignature
silverwind Nov 13, 2022
83e3629
trim off newline from commit.CommitMessage
silverwind Nov 13, 2022
92813a6
remove useless MERGE_RR file
silverwind Nov 13, 2022
9a831b9
fix TestCommitFromReader and rename file to commit_reader_test.go
silverwind Nov 13, 2022
78a1bdc
only trim a single newline
silverwind Nov 13, 2022
5e61ff5
really fix TestCommitFromReader
silverwind Nov 13, 2022
b4ef4ca
fix TestGetFileResponseFromCommit
silverwind Nov 13, 2022
3eb7378
fix TestDeleteRepoFile
silverwind Nov 13, 2022
ac8339c
fix TestAPICreateFile
silverwind Nov 13, 2022
4e3f0d9
fix TestAPIDeleteFile
silverwind Nov 13, 2022
0425a53
fix TestAPIUpdateFile
silverwind Nov 13, 2022
91e9ee4
fix wiki tests
silverwind Nov 14, 2022
20343db
back out of newline changes
silverwind Nov 15, 2022
9024813
Merge branch 'main' into tagfix
silverwind Nov 15, 2022
ab3ed7c
Merge branch 'main' into tagfix
silverwind Nov 24, 2022
33a14d4
Merge branch 'main' into tagfix
lunny Dec 6, 2022
8555ddf
Merge branch 'main' into tagfix
silverwind Mar 1, 2023
2f84573
Merge branch 'main' into tagfix
lunny Mar 2, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 0 additions & 39 deletions modules/git/repo_commit_gogit.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
package git

import (
"fmt"
"strings"

"github.com/go-git/go-git/v5/plumbing"
Expand Down Expand Up @@ -67,38 +66,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

Expand All @@ -122,12 +89,6 @@ func (repo *Repository) getCommit(id SHA1) (*Commit, error) {
commit := convertCommit(gogitCommit)
commit.repo = repo

if tagObject != nil {
commit.CommitMessage = strings.TrimSpace(tagObject.Message)
commit.Author = &tagObject.Tagger
commit.Signature = convertPGPSignatureForTag(tagObject)
}

tree, err := gogitCommit.Tree()
if err != nil {
return nil, err
Expand Down
4 changes: 0 additions & 4 deletions modules/git/repo_commit_nogogit.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,6 @@ func (repo *Repository) getCommitFromBatchReader(rd *bufio.Reader, id SHA1) (*Co
return nil, err
}

commit.CommitMessage = strings.TrimSpace(tag.Message)
commit.Author = tag.Tagger
commit.Signature = tag.Signature

return commit, nil
case "commit":
commit, err := CommitFromReader(repo, id, io.LimitReader(rd, size))
Expand Down
5 changes: 3 additions & 2 deletions modules/git/repo_commit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,13 @@ func TestGetTagCommitWithSignature(t *testing.T) {
assert.NoError(t, err)
defer bareRepo1.Close()

commit, err := bareRepo1.GetCommit("3ad28a9149a2864384548f3d17ed7f38014c9e8a")
// both the tag and the commit are signed here, this validates only the commit signature
commit, err := bareRepo1.GetCommit("28b55526e7100924d864dd89e35c1ea62e7a5a32")
assert.NoError(t, err)
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, "signed-commit\n", commit.CommitMessage)
silverwind marked this conversation as resolved.
Show resolved Hide resolved
}

func TestGetCommitWithBadCommitID(t *testing.T) {
Expand Down
12 changes: 8 additions & 4 deletions modules/git/repo_ref_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,14 @@ func TestRepository_GetRefs(t *testing.T) {
refs, err := bareRepo1.GetRefs()

assert.NoError(t, err)
assert.Len(t, refs, 5)
assert.Len(t, refs, 6)

expectedRefs := []string{
BranchPrefix + "branch1",
BranchPrefix + "branch2",
BranchPrefix + "master",
TagPrefix + "test",
TagPrefix + "signed-tag",
NotesRef,
}

Expand All @@ -43,9 +44,12 @@ func TestRepository_GetRefsFiltered(t *testing.T) {
refs, err := bareRepo1.GetRefsFiltered(TagPrefix)

assert.NoError(t, err)
if assert.Len(t, refs, 1) {
assert.Equal(t, TagPrefix+"test", refs[0].Name)
if assert.Len(t, refs, 2) {
assert.Equal(t, TagPrefix+"signed-tag", refs[0].Name)
assert.Equal(t, "tag", refs[0].Type)
assert.Equal(t, "3ad28a9149a2864384548f3d17ed7f38014c9e8a", refs[0].Object.String())
assert.Equal(t, "36f97d9a96457e2bab511db30fe2db03893ebc64", refs[0].Object.String())
assert.Equal(t, TagPrefix+"test", refs[1].Name)
assert.Equal(t, "tag", refs[1].Type)
assert.Equal(t, "3ad28a9149a2864384548f3d17ed7f38014c9e8a", refs[1].Object.String())
}
}
4 changes: 2 additions & 2 deletions modules/git/repo_stats_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ func TestRepository_GetCodeActivityStats(t *testing.T) {
assert.NoError(t, err)
assert.NotNil(t, code)

assert.EqualValues(t, 9, code.CommitCount)
assert.EqualValues(t, 10, code.CommitCount)
assert.EqualValues(t, 3, code.AuthorCount)
assert.EqualValues(t, 9, code.CommitCountInAllBranches)
assert.EqualValues(t, 10, code.CommitCountInAllBranches)
assert.EqualValues(t, 10, code.Additions)
assert.EqualValues(t, 1, code.Deletions)
assert.Len(t, code.Authors, 3)
Expand Down
9 changes: 6 additions & 3 deletions modules/git/repo_tag_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,14 @@ func TestRepository_GetTags(t *testing.T) {
assert.NoError(t, err)
return
}
assert.Len(t, tags, 1)
assert.Len(t, tags, 2)
assert.Equal(t, len(tags), total)
assert.EqualValues(t, "test", tags[0].Name)
assert.EqualValues(t, "3ad28a9149a2864384548f3d17ed7f38014c9e8a", tags[0].ID.String())
assert.EqualValues(t, "signed-tag", tags[0].Name)
silverwind marked this conversation as resolved.
Show resolved Hide resolved
assert.EqualValues(t, "36f97d9a96457e2bab511db30fe2db03893ebc64", tags[0].ID.String())
assert.EqualValues(t, "tag", tags[0].Type)
assert.EqualValues(t, "test", tags[1].Name)
assert.EqualValues(t, "3ad28a9149a2864384548f3d17ed7f38014c9e8a", tags[1].ID.String())
assert.EqualValues(t, "tag", tags[1].Type)
}

func TestRepository_GetTag(t *testing.T) {
Expand Down
6 changes: 3 additions & 3 deletions modules/git/repo_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ func TestGetLatestCommitTime(t *testing.T) {
bareRepo1Path := filepath.Join(testReposDir, "repo1_bare")
lct, err := GetLatestCommitTime(DefaultContext, bareRepo1Path)
assert.NoError(t, err)
// Time is Sun Jul 21 22:43:13 2019 +0200
// Time is Sun Nov 13 16:40:14 2022 +0100
// which is the time of commit
// feaf4ba6bc635fec442f46ddd4512416ec43c2c2 (refs/heads/master)
assert.EqualValues(t, 1563741793, lct.Unix())
// ce064814f4a0d337b333e646ece456cd39fab612 (refs/heads/master)
assert.EqualValues(t, 1668354014, lct.Unix())
}

func TestRepoIsEmpty(t *testing.T) {
Expand Down
Binary file added modules/git/tests/repos/repo1_bare/index
Binary file not shown.
1 change: 1 addition & 0 deletions modules/git/tests/repos/repo1_bare/logs/HEAD
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
37991dec2c8e592043f47155ce4808d4580f9123 feaf4ba6bc635fec442f46ddd4512416ec43c2c2 silverwind <me@silverwind.io> 1563741799 +0200 push
feaf4ba6bc635fec442f46ddd4512416ec43c2c2 ce064814f4a0d337b333e646ece456cd39fab612 silverwind <me@silverwind.io> 1668354026 +0100 push
1 change: 1 addition & 0 deletions modules/git/tests/repos/repo1_bare/logs/refs/heads/master
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
37991dec2c8e592043f47155ce4808d4580f9123 feaf4ba6bc635fec442f46ddd4512416ec43c2c2 silverwind <me@silverwind.io> 1563741799 +0200 push
feaf4ba6bc635fec442f46ddd4512416ec43c2c2 ce064814f4a0d337b333e646ece456cd39fab612 silverwind <me@silverwind.io> 1668354026 +0100 push
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion modules/git/tests/repos/repo1_bare/refs/heads/master
Original file line number Diff line number Diff line change
@@ -1 +1 @@
feaf4ba6bc635fec442f46ddd4512416ec43c2c2
ce064814f4a0d337b333e646ece456cd39fab612
1 change: 1 addition & 0 deletions modules/git/tests/repos/repo1_bare/refs/tags/signed-tag
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
36f97d9a96457e2bab511db30fe2db03893ebc64