From 44975f8fb66c4f93071d685ea876a29c59a6ec32 Mon Sep 17 00:00:00 2001 From: Guillermo Prandi Date: Tue, 3 Sep 2019 23:51:01 -0300 Subject: [PATCH 1/2] Add test for GetTagID() --- modules/git/repo_tag_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/git/repo_tag_test.go b/modules/git/repo_tag_test.go index 4f727c6c66fa8..ab9742afc5963 100644 --- a/modules/git/repo_tag_test.go +++ b/modules/git/repo_tag_test.go @@ -62,6 +62,16 @@ func TestRepository_GetTag(t *testing.T) { assert.NotEqual(t, aTagID, aTag.Object.String()) assert.EqualValues(t, aTagCommitID, aTag.Object.String()) assert.EqualValues(t, "tag", aTag.Type) + + rTagCommitID := "8006ff9adbf0cb94da7dad9e537e53817f9fa5c0" + rTagName := "release/" + lTagName + bareRepo1.CreateTag(rTagName, rTagCommitID) + rTagID, err := bareRepo1.GetTagID(rTagName) + assert.NoError(t, err) + assert.EqualValues(t, rTagCommitID, rTagID) + oTagID, err := bareRepo1.GetTagID(lTagName) + assert.NoError(t, err) + assert.EqualValues(t, lTagCommitID, oTagID) } func TestRepository_GetAnnotatedTag(t *testing.T) { From b60b48a77dec537d39c23062303dc1dff79f36d6 Mon Sep 17 00:00:00 2001 From: Guillermo Prandi Date: Tue, 3 Sep 2019 21:55:14 -0300 Subject: [PATCH 2/2] Strict name matching for Repository.GetTagID() --- modules/git/repo_tag.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/git/repo_tag.go b/modules/git/repo_tag.go index 91a7a0cd50762..9e08d00f0dc90 100644 --- a/modules/git/repo_tag.go +++ b/modules/git/repo_tag.go @@ -157,11 +157,14 @@ func (repo *Repository) GetTagID(name string) (string, error) { if err != nil { return "", err } - fields := strings.Fields(stdout) - if len(fields) != 2 { - return "", ErrNotExist{ID: name} + // Make sure exact match is used: "v1" != "release/v1" + for _, line := range strings.Split(stdout, "\n") { + fields := strings.Fields(line) + if len(fields) == 2 && fields[1] == "refs/tags/"+name { + return fields[0], nil + } } - return fields[0], nil + return "", ErrNotExist{ID: name} } // GetTag returns a Git tag by given name.