Skip to content

Commit 4cb1bdd

Browse files
guillep2klafriks
authored andcommitted
Strict name matching for Repository.GetTagID() (#8074)
* Strict name matching for Repository.GetTagID() * Perform make swagger-check swagger-validate vendor * Add test for GetTagID()
1 parent d9545f9 commit 4cb1bdd

33 files changed

+1801
-11
lines changed

go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,9 @@ require (
105105
golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472
106106
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297
107107
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45
108-
golang.org/x/sys v0.0.0-20190902133755-9109b7679e13
108+
golang.org/x/sys v0.0.0-20190904005037-43c01164e931
109109
golang.org/x/text v0.3.2
110-
golang.org/x/tools v0.0.0-20190830223141-573d9926052a // indirect
110+
golang.org/x/tools v0.0.0-20190903163617-be0da057c5e3 // indirect
111111
google.golang.org/appengine v1.6.2 // indirect
112112
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
113113
gopkg.in/asn1-ber.v1 v1.0.0-20150924051756-4e86f4367175 // indirect

go.sum

+4-4
Original file line numberDiff line numberDiff line change
@@ -492,8 +492,8 @@ golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7w
492492
golang.org/x/sys v0.0.0-20190730183949-1393eb018365/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
493493
golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3 h1:4y9KwBHBgBNwDbtu44R5o1fdOCQUEXhbk/P4A9WmJq0=
494494
golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
495-
golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 h1:tdsQdquKbTNMsSZLqnLELJGzCANp9oXhu6zFBW6ODx4=
496-
golang.org/x/sys v0.0.0-20190902133755-9109b7679e13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
495+
golang.org/x/sys v0.0.0-20190904005037-43c01164e931 h1:+WYfosiOJzB4BjsISl1Rv4ZLUy+VYcF+u+0Y9jcerv8=
496+
golang.org/x/sys v0.0.0-20190904005037-43c01164e931/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
497497
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
498498
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
499499
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
@@ -514,8 +514,8 @@ golang.org/x/tools v0.0.0-20190606050223-4d9ae51c2468/go.mod h1:/rFqwRUd4F7ZHNgw
514514
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
515515
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
516516
golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI=
517-
golang.org/x/tools v0.0.0-20190830223141-573d9926052a h1:XAHT1kdPpnU8Hk+FPi42KZFhtNFEk4vBg1U4OmIeHTU=
518-
golang.org/x/tools v0.0.0-20190830223141-573d9926052a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
517+
golang.org/x/tools v0.0.0-20190903163617-be0da057c5e3 h1:1cLrGl9PL64Mzl9NATDCqFE57dVYwWOkoPXvppEnjO4=
518+
golang.org/x/tools v0.0.0-20190903163617-be0da057c5e3/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
519519
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
520520
google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
521521
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=

modules/git/repo_tag.go

+7-4
Original file line numberDiff line numberDiff line change
@@ -157,11 +157,14 @@ func (repo *Repository) GetTagID(name string) (string, error) {
157157
if err != nil {
158158
return "", err
159159
}
160-
fields := strings.Fields(stdout)
161-
if len(fields) != 2 {
162-
return "", ErrNotExist{ID: name}
160+
// Make sure exact match is used: "v1" != "release/v1"
161+
for _, line := range strings.Split(stdout, "\n") {
162+
fields := strings.Fields(line)
163+
if len(fields) == 2 && fields[1] == "refs/tags/"+name {
164+
return fields[0], nil
165+
}
163166
}
164-
return fields[0], nil
167+
return "", ErrNotExist{ID: name}
165168
}
166169

167170
// GetTag returns a Git tag by given name.

modules/git/repo_tag_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,16 @@ func TestRepository_GetTag(t *testing.T) {
6262
assert.NotEqual(t, aTagID, aTag.Object.String())
6363
assert.EqualValues(t, aTagCommitID, aTag.Object.String())
6464
assert.EqualValues(t, "tag", aTag.Type)
65+
66+
rTagCommitID := "8006ff9adbf0cb94da7dad9e537e53817f9fa5c0"
67+
rTagName := "release/" + lTagName
68+
bareRepo1.CreateTag(rTagName, rTagCommitID)
69+
rTagID, err := bareRepo1.GetTagID(rTagName)
70+
assert.NoError(t, err)
71+
assert.EqualValues(t, rTagCommitID, rTagID)
72+
oTagID, err := bareRepo1.GetTagID(lTagName)
73+
assert.NoError(t, err)
74+
assert.EqualValues(t, lTagCommitID, oTagID)
6575
}
6676

6777
func TestRepository_GetAnnotatedTag(t *testing.T) {

vendor/golang.org/x/sys/unix/mkerrors.sh

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/golang.org/x/sys/unix/syscall_linux.go

+85
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/golang.org/x/sys/unix/zerrors_linux_386.go

+67
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go

+67
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)