{"action":"closed","issue":{"url":"https://api.github.com/repos/golang/go/issues/9249","labels_url":"https://api.github.com/repos/golang/go/issues/9249/labels{/name}","comments_url":"https://api.github.com/repos/golang/go/issues/9249/comments","events_url":"https://api.github.com/repos/golang/go/issues/9249/events","html_url":"https://github.com/golang/go/issues/9249","id":51624219,"number":9249,"title":"cmd/go: cache meta lookups during go get","user":{"login":"bradfitz","id":2621,"avatar_url":"https://avatars.githubusercontent.com/u/2621?v=3","gravatar_id":"","url":"https://api.github.com/users/bradfitz","html_url":"https://github.com/bradfitz","followers_url":"https://api.github.com/users/bradfitz/followers","following_url":"https://api.github.com/users/bradfitz/following{/other_user}","gists_url":"https://api.github.com/users/bradfitz/gists{/gist_id}","starred_url":"https://api.github.com/users/bradfitz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bradfitz/subscriptions","organizations_url":"https://api.github.com/users/bradfitz/orgs","repos_url":"https://api.github.com/users/bradfitz/repos","events_url":"https://api.github.com/users/bradfitz/events{/privacy}","received_events_url":"https://api.github.com/users/bradfitz/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":{"login":"bradfitz","id":2621,"avatar_url":"https://avatars.githubusercontent.com/u/2621?v=3","gravatar_id":"","url":"https://api.github.com/users/bradfitz","html_url":"https://github.com/bradfitz","followers_url":"https://api.github.com/users/bradfitz/followers","following_url":"https://api.github.com/users/bradfitz/following{/other_user}","gists_url":"https://api.github.com/users/bradfitz/gists{/gist_id}","starred_url":"https://api.github.com/users/bradfitz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bradfitz/subscriptions","organizations_url":"https://api.github.com/users/bradfitz/orgs","repos_url":"https://api.github.com/users/bradfitz/repos","events_url":"https://api.github.com/users/bradfitz/events{/privacy}","received_events_url":"https://api.github.com/users/bradfitz/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/golang/go/milestones/2","html_url":"https://github.com/golang/go/milestones/Go1.5Maybe","labels_url":"https://api.github.com/repos/golang/go/milestones/2/labels","id":905114,"number":2,"title":"Go1.5Maybe","description":"Things that might make Go 1.5, but aren't critical.\r\n","creator":{"login":"bradfitz","id":2621,"avatar_url":"https://avatars.githubusercontent.com/u/2621?v=3","gravatar_id":"","url":"https://api.github.com/users/bradfitz","html_url":"https://github.com/bradfitz","followers_url":"https://api.github.com/users/bradfitz/followers","following_url":"https://api.github.com/users/bradfitz/following{/other_user}","gists_url":"https://api.github.com/users/bradfitz/gists{/gist_id}","starred_url":"https://api.github.com/users/bradfitz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bradfitz/subscriptions","organizations_url":"https://api.github.com/users/bradfitz/orgs","repos_url":"https://api.github.com/users/bradfitz/repos","events_url":"https://api.github.com/users/bradfitz/events{/privacy}","received_events_url":"https://api.github.com/users/bradfitz/received_events","type":"User","site_admin":false},"open_issues":107,"closed_issues":6,"state":"open","created_at":"2014-12-16T02:39:13Z","updated_at":"2015-04-13T07:09:14Z","due_on":"2015-07-31T04:00:00Z","closed_at":null},"comments":4,"created_at":"2014-12-10T23:11:10Z","updated_at":"2015-04-13T07:09:14Z","closed_at":"2015-04-13T07:09:14Z","body":"Installing godoc, I see many meta tag lookups. Can we do better?\r\n\r\n```\r\n$ go get -u -v golang.org/x/tools/cmd/godoc\r\nFetching https://golang.org/x/tools/cmd/godoc?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/cmd/godoc?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/cmd/godoc\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/cmd/godoc?go-get=1\r\nget \"golang.org/x/tools/cmd/godoc\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\ngolang.org/x/tools (download)\r\nFetching https://golang.org/x/tools/astutil?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/astutil?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/astutil\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/astutil?go-get=1\r\nget \"golang.org/x/tools/astutil\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/blog?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/blog?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/blog\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/blog?go-get=1\r\nget \"golang.org/x/tools/blog\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/blog/atom?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/blog/atom?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/blog/atom\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/blog/atom?go-get=1\r\nget \"golang.org/x/tools/blog/atom\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/present?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/present?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/present\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/present?go-get=1\r\nget \"golang.org/x/tools/present\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/container/intsets?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/container/intsets?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/container/intsets\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/container/intsets?go-get=1\r\nget \"golang.org/x/tools/container/intsets\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/go/callgraph?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/go/callgraph?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/go/callgraph\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/go/callgraph?go-get=1\r\nget \"golang.org/x/tools/go/callgraph\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/go/exact?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/go/exact?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/go/exact\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/go/exact?go-get=1\r\nget \"golang.org/x/tools/go/exact\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/go/gcimporter?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/go/gcimporter?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/go/gcimporter\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/go/gcimporter?go-get=1\r\nget \"golang.org/x/tools/go/gcimporter\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/go/types?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/go/types?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/go/types\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/go/types?go-get=1\r\nget \"golang.org/x/tools/go/types\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/go/loader?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/go/loader?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/go/loader\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/go/loader?go-get=1\r\nget \"golang.org/x/tools/go/loader\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/go/ssa?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/go/ssa?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/go/ssa\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/go/ssa?go-get=1\r\nget \"golang.org/x/tools/go/ssa\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/go/types/typeutil?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/go/types/typeutil?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/go/types/typeutil\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/go/types/typeutil?go-get=1\r\nget \"golang.org/x/tools/go/types/typeutil\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/go/pointer?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/go/pointer?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/go/pointer\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/go/pointer?go-get=1\r\nget \"golang.org/x/tools/go/pointer\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/go/ssa/ssautil?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/go/ssa/ssautil?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/go/ssa/ssautil\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/go/ssa/ssautil?go-get=1\r\nget \"golang.org/x/tools/go/ssa/ssautil\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/godoc?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/godoc?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/godoc\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/godoc?go-get=1\r\nget \"golang.org/x/tools/godoc\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/godoc/analysis?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/godoc/analysis?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/godoc/analysis\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/godoc/analysis?go-get=1\r\nget \"golang.org/x/tools/godoc/analysis\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/godoc/util?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/godoc/util?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/godoc/util\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/godoc/util?go-get=1\r\nget \"golang.org/x/tools/godoc/util\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/godoc/vfs?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/godoc/vfs?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/godoc/vfs\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/godoc/vfs?go-get=1\r\nget \"golang.org/x/tools/godoc/vfs\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/godoc/vfs/httpfs?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/godoc/vfs/httpfs?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/godoc/vfs/httpfs\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/godoc/vfs/httpfs?go-get=1\r\nget \"golang.org/x/tools/godoc/vfs/httpfs\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/godoc/redirect?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/godoc/redirect?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/godoc/redirect\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/godoc/redirect?go-get=1\r\nget \"golang.org/x/tools/godoc/redirect\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/godoc/static?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/godoc/static?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/godoc/static\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/godoc/static?go-get=1\r\nget \"golang.org/x/tools/godoc/static\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/godoc/vfs/gatefs?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/godoc/vfs/gatefs?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/godoc/vfs/gatefs\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/godoc/vfs/gatefs?go-get=1\r\nget \"golang.org/x/tools/godoc/vfs/gatefs\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/godoc/vfs/mapfs?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/godoc/vfs/mapfs?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/godoc/vfs/mapfs\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/godoc/vfs/mapfs?go-get=1\r\nget \"golang.org/x/tools/godoc/vfs/mapfs\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/godoc/vfs/zipfs?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/godoc/vfs/zipfs?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/godoc/vfs/zipfs\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/godoc/vfs/zipfs?go-get=1\r\nget \"golang.org/x/tools/godoc/vfs/zipfs\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\nFetching https://golang.org/x/tools/playground?go-get=1\r\nParsing meta tags from https://golang.org/x/tools/playground?go-get=1 (status code 200)\r\nget \"golang.org/x/tools/playground\": found meta tag main.metaImport{Prefix:\"golang.org/x/tools\", VCS:\"git\", RepoRoot:\"https://go.googlesource.com/tools\"} at https://golang.org/x/tools/playground?go-get=1\r\nget \"golang.org/x/tools/playground\": verifying non-authoritative meta tag\r\nFetching https://golang.org/x/tools?go-get=1\r\nParsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)\r\ngolang.org/x/tools/blog/atom\r\ngolang.org/x/tools/present\r\ngolang.org/x/tools/go/exact\r\ngolang.org/x/tools/astutil\r\ngolang.org/x/tools/container/intsets\r\ngolang.org/x/tools/godoc/vfs\r\ngolang.org/x/tools/go/types\r\ngolang.org/x/tools/godoc/util\r\ngolang.org/x/tools/godoc/vfs/httpfs\r\ngolang.org/x/tools/godoc/redirect\r\ngolang.org/x/tools/blog\r\ngolang.org/x/tools/godoc/static\r\ngolang.org/x/tools/godoc/vfs/gatefs\r\ngolang.org/x/tools/godoc/vfs/mapfs\r\ngolang.org/x/tools/godoc/vfs/zipfs\r\ngolang.org/x/tools/playground\r\ngolang.org/x/tools/go/gcimporter\r\ngolang.org/x/tools/go/types/typeutil\r\ngolang.org/x/tools/go/loader\r\ngolang.org/x/tools/go/ssa\r\ngolang.org/x/tools/go/callgraph\r\ngolang.org/x/tools/go/ssa/ssautil\r\ngolang.org/x/tools/go/pointer\r\ngolang.org/x/tools/godoc/analysis\r\ngolang.org/x/tools/godoc\r\ngolang.org/x/tools/cmd/godoc\r\n```\r\n"}}