From 95e627732b2647df01c3ca07e6ccea7270e2b2fe Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Wed, 12 Jan 2022 01:24:35 +0100 Subject: [PATCH 1/2] fix npe --- modules/git/repo_commit_nogogit.go | 3 +-- modules/git/repo_tag.go | 3 +-- modules/git/repo_tree_nogogit.go | 2 +- modules/git/tag.go | 3 ++- modules/git/tag_test.go | 2 +- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/modules/git/repo_commit_nogogit.go b/modules/git/repo_commit_nogogit.go index 4c1670742c722..bd217aed31121 100644 --- a/modules/git/repo_commit_nogogit.go +++ b/modules/git/repo_commit_nogogit.go @@ -99,11 +99,10 @@ func (repo *Repository) getCommitFromBatchReader(rd *bufio.Reader, id SHA1) (*Co if err != nil { return nil, err } - tag, err := parseTagData(data) + tag, err := parseTagData(repo, data) if err != nil { return nil, err } - tag.repo = repo commit, err := tag.Commit() if err != nil { diff --git a/modules/git/repo_tag.go b/modules/git/repo_tag.go index 4262e0804f14a..136dd5c20fceb 100644 --- a/modules/git/repo_tag.go +++ b/modules/git/repo_tag.go @@ -85,14 +85,13 @@ func (repo *Repository) getTag(tagID SHA1, name string) (*Tag, error) { return nil, err } - tag, err := parseTagData(data) + tag, err := parseTagData(repo, data) if err != nil { return nil, err } tag.Name = name tag.ID = tagID - tag.repo = repo tag.Type = tp repo.tagCache.Set(tagID.String(), tag) diff --git a/modules/git/repo_tree_nogogit.go b/modules/git/repo_tree_nogogit.go index 56a4a732e034c..2d60b9b343749 100644 --- a/modules/git/repo_tree_nogogit.go +++ b/modules/git/repo_tree_nogogit.go @@ -30,7 +30,7 @@ func (repo *Repository) getTree(id SHA1) (*Tree, error) { if err != nil { return nil, err } - tag, err := parseTagData(data) + tag, err := parseTagData(repo, data) if err != nil { return nil, err } diff --git a/modules/git/tag.go b/modules/git/tag.go index 23f09e25b6c8a..99a59273714b9 100644 --- a/modules/git/tag.go +++ b/modules/git/tag.go @@ -33,8 +33,9 @@ func (tag *Tag) Commit() (*Commit, error) { // Parse commit information from the (uncompressed) raw // data from the commit object. // \n\n separate headers from message -func parseTagData(data []byte) (*Tag, error) { +func parseTagData(repo *Repository, data []byte) (*Tag, error) { tag := new(Tag) + tag.repo = repo tag.Tagger = &Signature{} // we now have the contents of the commit object. Let's investigate... nextline := 0 diff --git a/modules/git/tag_test.go b/modules/git/tag_test.go index 3aa49df4b2557..97d86c3160969 100644 --- a/modules/git/tag_test.go +++ b/modules/git/tag_test.go @@ -52,7 +52,7 @@ ono`), tag: Tag{ } for _, test := range testData { - tag, err := parseTagData(test.data) + tag, err := parseTagData(nil, test.data) assert.NoError(t, err) assert.EqualValues(t, test.tag.ID, tag.ID) assert.EqualValues(t, test.tag.Object, tag.Object) From 7c4934ca42dcce6e79154a878b263b5a65c1b88e Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Wed, 12 Jan 2022 20:23:02 +0100 Subject: [PATCH 2/2] rm gitRepo from Tag --- modules/git/repo_commit_nogogit.go | 4 ++-- modules/git/repo_tag.go | 3 +-- modules/git/repo_tag_test.go | 1 - modules/git/repo_tree_nogogit.go | 4 ++-- modules/git/tag.go | 8 +++----- modules/git/tag_test.go | 4 +--- modules/repository/repo.go | 2 +- routers/api/v1/repo/tag.go | 2 +- services/repository/push.go | 2 +- 9 files changed, 12 insertions(+), 18 deletions(-) diff --git a/modules/git/repo_commit_nogogit.go b/modules/git/repo_commit_nogogit.go index bd217aed31121..cc02e551baa59 100644 --- a/modules/git/repo_commit_nogogit.go +++ b/modules/git/repo_commit_nogogit.go @@ -99,12 +99,12 @@ func (repo *Repository) getCommitFromBatchReader(rd *bufio.Reader, id SHA1) (*Co if err != nil { return nil, err } - tag, err := parseTagData(repo, data) + tag, err := parseTagData(data) if err != nil { return nil, err } - commit, err := tag.Commit() + commit, err := tag.Commit(repo) if err != nil { return nil, err } diff --git a/modules/git/repo_tag.go b/modules/git/repo_tag.go index 136dd5c20fceb..6b5dbeef48239 100644 --- a/modules/git/repo_tag.go +++ b/modules/git/repo_tag.go @@ -72,7 +72,6 @@ func (repo *Repository) getTag(tagID SHA1, name string) (*Tag, error) { Type: tp, Tagger: commit.Committer, Message: commit.Message(), - repo: repo, } repo.tagCache.Set(tagID.String(), tag) @@ -85,7 +84,7 @@ func (repo *Repository) getTag(tagID SHA1, name string) (*Tag, error) { return nil, err } - tag, err := parseTagData(repo, data) + tag, err := parseTagData(data) if err != nil { return nil, err } diff --git a/modules/git/repo_tag_test.go b/modules/git/repo_tag_test.go index 33d34743f805b..f4d6726ea1a60 100644 --- a/modules/git/repo_tag_test.go +++ b/modules/git/repo_tag_test.go @@ -55,7 +55,6 @@ func TestRepository_GetTag(t *testing.T) { if lTag == nil { assert.FailNow(t, "nil lTag: %s", lTagName) } - lTag.repo = nil assert.EqualValues(t, lTagName, lTag.Name) assert.EqualValues(t, lTagCommitID, lTag.ID.String()) assert.EqualValues(t, lTagCommitID, lTag.Object.String()) diff --git a/modules/git/repo_tree_nogogit.go b/modules/git/repo_tree_nogogit.go index 2d60b9b343749..00009c997dfec 100644 --- a/modules/git/repo_tree_nogogit.go +++ b/modules/git/repo_tree_nogogit.go @@ -30,11 +30,11 @@ func (repo *Repository) getTree(id SHA1) (*Tree, error) { if err != nil { return nil, err } - tag, err := parseTagData(repo, data) + tag, err := parseTagData(data) if err != nil { return nil, err } - commit, err := tag.Commit() + commit, err := tag.Commit(repo) if err != nil { return nil, err } diff --git a/modules/git/tag.go b/modules/git/tag.go index 99a59273714b9..71dd866a18bbf 100644 --- a/modules/git/tag.go +++ b/modules/git/tag.go @@ -17,7 +17,6 @@ const endpgp = "\n-----END PGP SIGNATURE-----" type Tag struct { Name string ID SHA1 - repo *Repository Object SHA1 // The id of this commit object Type string Tagger *Signature @@ -26,16 +25,15 @@ type Tag struct { } // Commit return the commit of the tag reference -func (tag *Tag) Commit() (*Commit, error) { - return tag.repo.getCommit(tag.Object) +func (tag *Tag) Commit(gitRepo *Repository) (*Commit, error) { + return gitRepo.getCommit(tag.Object) } // Parse commit information from the (uncompressed) raw // data from the commit object. // \n\n separate headers from message -func parseTagData(repo *Repository, data []byte) (*Tag, error) { +func parseTagData(data []byte) (*Tag, error) { tag := new(Tag) - tag.repo = repo tag.Tagger = &Signature{} // we now have the contents of the commit object. Let's investigate... nextline := 0 diff --git a/modules/git/tag_test.go b/modules/git/tag_test.go index 97d86c3160969..e5f1660b8ef3c 100644 --- a/modules/git/tag_test.go +++ b/modules/git/tag_test.go @@ -24,7 +24,6 @@ tagger Lucas Michot 1484491741 +0100 `), tag: Tag{ Name: "", ID: SHA1{}, - repo: nil, 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)}, @@ -42,7 +41,6 @@ o ono`), tag: Tag{ Name: "", ID: SHA1{}, - repo: nil, 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)}, @@ -52,7 +50,7 @@ ono`), tag: Tag{ } for _, test := range testData { - tag, err := parseTagData(nil, test.data) + tag, err := parseTagData(test.data) assert.NoError(t, err) assert.EqualValues(t, test.tag.ID, tag.ID) assert.EqualValues(t, test.tag.Object, tag.Object) diff --git a/modules/repository/repo.go b/modules/repository/repo.go index d04cd28a59f0d..eb3f58e937ec2 100644 --- a/modules/repository/repo.go +++ b/modules/repository/repo.go @@ -296,7 +296,7 @@ func PushUpdateAddTag(repo *repo_model.Repository, gitRepo *git.Repository, tagN if err != nil { return fmt.Errorf("GetTag: %v", err) } - commit, err := tag.Commit() + commit, err := tag.Commit(gitRepo) if err != nil { return fmt.Errorf("Commit: %v", err) } diff --git a/routers/api/v1/repo/tag.go b/routers/api/v1/repo/tag.go index 8d42e63a489f0..13a625bafb6e0 100644 --- a/routers/api/v1/repo/tag.go +++ b/routers/api/v1/repo/tag.go @@ -103,7 +103,7 @@ func GetAnnotatedTag(ctx *context.APIContext) { if tag, err := ctx.Repo.GitRepo.GetAnnotatedTag(sha); err != nil { ctx.Error(http.StatusBadRequest, "GetAnnotatedTag", err) } else { - commit, err := tag.Commit() + commit, err := tag.Commit(ctx.Repo.GitRepo) if err != nil { ctx.Error(http.StatusBadRequest, "GetAnnotatedTag", err) } diff --git a/services/repository/push.go b/services/repository/push.go index fe3f32f839632..11854ccb3978c 100644 --- a/services/repository/push.go +++ b/services/repository/push.go @@ -294,7 +294,7 @@ func pushUpdateAddTags(ctx context.Context, repo *repo_model.Repository, gitRepo if err != nil { return fmt.Errorf("GetTag: %v", err) } - commit, err := tag.Commit() + commit, err := tag.Commit(gitRepo) if err != nil { return fmt.Errorf("Commit: %v", err) }