aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Gerrand <adg@golang.org>2012-04-26 11:36:07 -0700
committerAndrew Gerrand <adg@golang.org>2012-04-26 11:36:07 -0700
commit6b8d891e4e0d102316d164dbd9b5c376d31649ad (patch)
treea9a58a50ecf399a820207e6723cf888f2744c9c8
parentcbffaffa6d904df85c6e6e37179a603f57666053 (diff)
downloadgo-6b8d891e4e0d102316d164dbd9b5c376d31649ad.tar.gz
go-6b8d891e4e0d102316d164dbd9b5c376d31649ad.zip
[release-branch.go1] cmd/go: new tag selection logic
««« CL 6112060 / bcd5635a53b0 cmd/go: new tag selection logic The new logic is "use go1 if it's there, otherwise no tag." Nothing needs to say "I require go1.0.1", and I want to preserve some flexibility in defining what tags mean. Right now (before go1.0.1) there is only one possible tag, "go1", and I'd like to keep it that way. R=golang-dev, bradfitz, r, adg CC=golang-dev https://golang.org/cl/6112060 »»» R=golang-dev CC=golang-dev https://golang.org/cl/6116059
-rw-r--r--src/cmd/go/get.go64
-rw-r--r--src/cmd/go/tag_test.go71
2 files changed, 57 insertions, 78 deletions
diff --git a/src/cmd/go/get.go b/src/cmd/go/get.go
index 97a6d8dc74..fe45697e28 100644
--- a/src/cmd/go/get.go
+++ b/src/cmd/go/get.go
@@ -335,56 +335,32 @@ var goTag = regexp.MustCompile(
// Version "goX" (or "goX.Y" or "goX.Y.Z") matches tags of the same form.
// Version "release.rN" matches tags of the form "go.rN" (N being a floating-point number).
// Version "weekly.YYYY-MM-DD" matches tags like "go.weekly.YYYY-MM-DD".
+//
+// NOTE(rsc): Eventually we will need to decide on some logic here.
+// For now, there is only "go1". This matches the docs in go help get.
func selectTag(goVersion string, tags []string) (match string) {
- const rPrefix = "release.r"
- if strings.HasPrefix(goVersion, rPrefix) {
- p := "go.r"
- v, err := strconv.ParseFloat(goVersion[len(rPrefix):], 64)
- if err != nil {
- return ""
- }
- var matchf float64
- for _, t := range tags {
- if !strings.HasPrefix(t, p) {
- continue
- }
- tf, err := strconv.ParseFloat(t[len(p):], 64)
- if err != nil {
- continue
- }
- if matchf < tf && tf <= v {
- match, matchf = t, tf
- }
+ for _, t := range tags {
+ if t == "go1" {
+ return "go1"
}
}
-
- const wPrefix = "weekly."
- if strings.HasPrefix(goVersion, wPrefix) {
- p := "go.weekly."
- v := goVersion[len(wPrefix):]
- for _, t := range tags {
- if !strings.HasPrefix(t, p) {
- continue
- }
- if match < t && t[len(p):] <= v {
- match = t
- }
- }
- }
-
- if goTag.MatchString(goVersion) {
- v := goVersion
- for _, t := range tags {
- if !goTag.MatchString(t) {
- continue
- }
- if cmpGoVersion(match, t) < 0 && cmpGoVersion(t, v) <= 0 {
- match = t
+ return ""
+
+ /*
+ if goTag.MatchString(goVersion) {
+ v := goVersion
+ for _, t := range tags {
+ if !goTag.MatchString(t) {
+ continue
+ }
+ if cmpGoVersion(match, t) < 0 && cmpGoVersion(t, v) <= 0 {
+ match = t
+ }
}
}
- }
- return match
+ return match
+ */
}
// cmpGoVersion returns -1, 0, +1 reporting whether
diff --git a/src/cmd/go/tag_test.go b/src/cmd/go/tag_test.go
index 556a84a8e4..ffe218c7b6 100644
--- a/src/cmd/go/tag_test.go
+++ b/src/cmd/go/tag_test.go
@@ -50,41 +50,44 @@ var selectTagTests = []struct {
version string
selected string
}{
- {"release.r57", ""},
- {"release.r58.2", "go.r58.1"},
- {"release.r59", "go.r59"},
- {"release.r59.1", "go.r59.1"},
- {"release.r60", "go.r59.1"},
- {"release.r60.1", "go.r59.1"},
- {"release.r61", "go.r61"},
- {"release.r66", "go.r61.1"},
- {"weekly.2010-01-01", ""},
- {"weekly.2010-01-02", "go.weekly.2010-01-02"},
- {"weekly.2010-01-02.1", "go.weekly.2010-01-02"},
- {"weekly.2010-01-03", "go.weekly.2010-01-02"},
- {"weekly.2011-10-12", "go.weekly.2011-10-12"},
- {"weekly.2011-10-12.1", "go.weekly.2011-10-12.1"},
- {"weekly.2011-10-13", "go.weekly.2011-10-12.1"},
- {"weekly.2011-10-14", "go.weekly.2011-10-14"},
- {"weekly.2011-10-14.1", "go.weekly.2011-10-14"},
- {"weekly.2011-11-01", "go.weekly.2011-11-01"},
- {"weekly.2014-01-01", "go.weekly.2011-11-01"},
- {"weekly.3000-01-01", "go.weekly.2011-11-01"},
- {"go1", "go1"},
- {"go1.1", "go1.0.1"},
- {"go1.998", "go1.9.2"},
- {"go1.1000", "go1.999"},
- {"go6", "go5"},
+ /*
+ {"release.r57", ""},
+ {"release.r58.2", "go.r58.1"},
+ {"release.r59", "go.r59"},
+ {"release.r59.1", "go.r59.1"},
+ {"release.r60", "go.r59.1"},
+ {"release.r60.1", "go.r59.1"},
+ {"release.r61", "go.r61"},
+ {"release.r66", "go.r61.1"},
+ {"weekly.2010-01-01", ""},
+ {"weekly.2010-01-02", "go.weekly.2010-01-02"},
+ {"weekly.2010-01-02.1", "go.weekly.2010-01-02"},
+ {"weekly.2010-01-03", "go.weekly.2010-01-02"},
+ {"weekly.2011-10-12", "go.weekly.2011-10-12"},
+ {"weekly.2011-10-12.1", "go.weekly.2011-10-12.1"},
+ {"weekly.2011-10-13", "go.weekly.2011-10-12.1"},
+ {"weekly.2011-10-14", "go.weekly.2011-10-14"},
+ {"weekly.2011-10-14.1", "go.weekly.2011-10-14"},
+ {"weekly.2011-11-01", "go.weekly.2011-11-01"},
+ {"weekly.2014-01-01", "go.weekly.2011-11-01"},
+ {"weekly.3000-01-01", "go.weekly.2011-11-01"},
+ {"go1", "go1"},
+ {"go1.1", "go1.0.1"},
+ {"go1.998", "go1.9.2"},
+ {"go1.1000", "go1.999"},
+ {"go6", "go5"},
- // faulty versions:
- {"release.f00", ""},
- {"weekly.1999-01-01", ""},
- {"junk", ""},
- {"", ""},
- {"go2x", ""},
- {"go200000000000", ""},
- {"go2.", ""},
- {"go2.0", ""},
+ // faulty versions:
+ {"release.f00", ""},
+ {"weekly.1999-01-01", ""},
+ {"junk", ""},
+ {"", ""},
+ {"go2x", ""},
+ {"go200000000000", ""},
+ {"go2.", ""},
+ {"go2.0", ""},
+ */
+ {"anything", "go1"},
}
func TestSelectTag(t *testing.T) {