diff options
author | Bryan C. Mills <bcmills@google.com> | 2019-10-03 18:55:59 +0000 |
---|---|---|
committer | Bryan C. Mills <bcmills@google.com> | 2019-10-04 20:31:54 +0000 |
commit | cf54026495f1263cf3b589e52a7ef435de980c52 (patch) | |
tree | ba9078afd712a6e4dadee6ce8633d3ef73544f61 | |
parent | 66b8787f6bb461838dbf482d021c30daeef6dfa6 (diff) | |
download | go-git-cf54026495f1263cf3b589e52a7ef435de980c52.tar.gz |
[release-branch.go1.13] Revert "cmd/go: add a Latest field to the output of 'go mod download -json'"
This reverts CL 183841.
Updates #34533
Fixes #34679
Reason for revert: Introduced a significant performance regression for repos with many incompatible-version tags.
Change-Id: I75d7fd76e6e1a0902b114b00167b38439e0f8221
Reviewed-on: https://go-review.googlesource.com/c/go/+/198699
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Katie Hockman <katie@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
(cherry picked from commit 961837dec23f900bbf8b04230c72397a0aab4be6)
Reviewed-on: https://go-review.googlesource.com/c/go/+/199079
-rw-r--r-- | src/cmd/go/alldocs.go | 1 | ||||
-rw-r--r-- | src/cmd/go/internal/modcmd/download.go | 30 | ||||
-rw-r--r-- | src/cmd/go/testdata/script/mod_download.txt | 4 | ||||
-rw-r--r-- | src/cmd/go/testdata/script/mod_download_latest.txt | 20 | ||||
-rw-r--r-- | src/cmd/go/testdata/script/mod_list_upgrade.txt | 20 |
5 files changed, 1 insertions, 74 deletions
diff --git a/src/cmd/go/alldocs.go b/src/cmd/go/alldocs.go index ebbead5d31..0a8935b6bc 100644 --- a/src/cmd/go/alldocs.go +++ b/src/cmd/go/alldocs.go @@ -1018,7 +1018,6 @@ // Dir string // absolute path to cached source root directory // Sum string // checksum for path, version (as in go.sum) // GoModSum string // checksum for go.mod (as in go.sum) -// Latest bool // would @latest resolve to this version? // } // // See 'go help modules' for more about module queries. diff --git a/src/cmd/go/internal/modcmd/download.go b/src/cmd/go/internal/modcmd/download.go index 60d0d5b6e2..0d432e9549 100644 --- a/src/cmd/go/internal/modcmd/download.go +++ b/src/cmd/go/internal/modcmd/download.go @@ -43,7 +43,6 @@ corresponding to this Go struct: Dir string // absolute path to cached source root directory Sum string // checksum for path, version (as in go.sum) GoModSum string // checksum for go.mod (as in go.sum) - Latest bool // would @latest resolve to this version? } See 'go help modules' for more about module queries. @@ -66,7 +65,6 @@ type moduleJSON struct { Dir string `json:",omitempty"` Sum string `json:",omitempty"` GoModSum string `json:",omitempty"` - Latest bool `json:",omitempty"` } func runDownload(cmd *base.Command, args []string) { @@ -105,31 +103,6 @@ func runDownload(cmd *base.Command, args []string) { work.Add(m) } - latest := map[string]string{} // path → version - if *downloadJSON { - // We need to populate the Latest field, but if the main module depends on a - // version newer than latest — or if the version requested on the command - // line is itself newer than latest — that's not trivial to determine from - // the info returned by ListModules. Instead, we issue a separate - // ListModules request for "latest", which should be inexpensive relative to - // downloading the modules. - var latestArgs []string - for _, m := range mods { - if m.Error != "" { - continue - } - latestArgs = append(latestArgs, m.Path+"@latest") - } - - if len(latestArgs) > 0 { - for _, info := range modload.ListModules(latestArgs, listU, listVersions) { - if info.Version != "" { - latest[info.Path] = info.Version - } - } - } - } - work.Do(10, func(item interface{}) { m := item.(*moduleJSON) var err error @@ -160,9 +133,6 @@ func runDownload(cmd *base.Command, args []string) { m.Error = err.Error() return } - if latest[m.Path] == m.Version { - m.Latest = true - } }) if *downloadJSON { diff --git a/src/cmd/go/testdata/script/mod_download.txt b/src/cmd/go/testdata/script/mod_download.txt index 9eb3140c33..0777913786 100644 --- a/src/cmd/go/testdata/script/mod_download.txt +++ b/src/cmd/go/testdata/script/mod_download.txt @@ -17,7 +17,6 @@ stderr 'this.domain.is.invalid' stdout '"Error": ".*this.domain.is.invalid.*"' # download -json with version should print JSON -# and download the .info file for the 'latest' version. go mod download -json 'rsc.io/quote@<=v1.5.0' stdout '^\t"Path": "rsc.io/quote"' stdout '^\t"Version": "v1.5.0"' @@ -28,14 +27,13 @@ stdout '^\t"Sum": "h1:6fJa6E\+wGadANKkUMlZ0DhXFpoKlslOQDCo259XtdIE="' # hash of stdout '^\t"GoModSum": "h1:LzX7hefJvL54yjefDEDHNONDjII0t9xZLPXsUe\+TKr0="' ! stdout '"Error"' -exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.2.info - # download queries above should not have added to go.mod. go list -m all ! stdout rsc.io # add to go.mod so we can test non-query downloads go mod edit -require rsc.io/quote@v1.5.2 +! exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.2.info ! exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.2.mod ! exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.2.zip diff --git a/src/cmd/go/testdata/script/mod_download_latest.txt b/src/cmd/go/testdata/script/mod_download_latest.txt deleted file mode 100644 index 60d860e4da..0000000000 --- a/src/cmd/go/testdata/script/mod_download_latest.txt +++ /dev/null @@ -1,20 +0,0 @@ -env GO111MODULE=on - -# If the module is the latest version of itself, -# the Latest field should be set. -go mod download -json rsc.io/quote@v1.5.2 -stdout '"Latest":\s*true' - -# If the module is older than latest, the field should be unset. -go mod download -json rsc.io/quote@v1.5.1 -! stdout '"Latest":' - -# If the module is newer than "latest", the field should be unset... -go mod download -json rsc.io/quote@v1.5.3-pre1 -! stdout '"Latest":' - -# ...even if that version is also what is required by the main module. -go mod init example.com -go mod edit -require rsc.io/quote@v1.5.3-pre1 -go mod download -json rsc.io/quote@v1.5.3-pre1 -! stdout '"Latest":' diff --git a/src/cmd/go/testdata/script/mod_list_upgrade.txt b/src/cmd/go/testdata/script/mod_list_upgrade.txt index f2d0649092..474df0dc26 100644 --- a/src/cmd/go/testdata/script/mod_list_upgrade.txt +++ b/src/cmd/go/testdata/script/mod_list_upgrade.txt @@ -1,28 +1,8 @@ env GO111MODULE=on -# If the current version is not latest, 'go list -u' should include its upgrade. go list -m -u all stdout 'rsc.io/quote v1.2.0 \[v1\.5\.2\]' -# If the current version is latest, 'go list -u' should omit the upgrade. -go get -d rsc.io/quote@v1.5.2 -go list -m -u all -stdout 'rsc.io/quote v1.5.2$' - -# If the current version is newer than latest, 'go list -u' should -# omit the upgrade. -go get -d rsc.io/quote@v1.5.3-pre1 -go list -m -u all -stdout 'rsc.io/quote v1.5.3-pre1$' - -# If the current build list has a higher version and the user asks about -# a lower one, -u should report the upgrade for the lower one -# but leave the build list unchanged. -go list -m -u rsc.io/quote@v1.5.1 -stdout 'rsc.io/quote v1.5.1 \[v1.5.2\]$' -go list -m -u rsc.io/quote -stdout 'rsc.io/quote v1.5.3-pre1$' - -- go.mod -- module x require rsc.io/quote v1.2.0 |