[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
diff --git a/src/cmd/go/get.go b/src/cmd/go/get.go
index 97a6d8d..fe45697 100644
--- a/src/cmd/go/get.go
+++ b/src/cmd/go/get.go
@@ -335,56 +335,32 @@
 // 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"
 		}
 	}
+	return ""
 
-	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
+				}
 			}
 		}
-	}
 
-	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 556a84a..ffe218c 100644
--- a/src/cmd/go/tag_test.go
+++ b/src/cmd/go/tag_test.go
@@ -50,41 +50,44 @@
 	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) {