Skip to content

go mod vendor with replace cannot find revision referring to Git tag #35878

Closed
@jaypipes

Description

@jaypipes

What version of Go are you using (go version)?

$ go version
go version go1.12.6 linux/amd64

Does this issue reproduce with the latest release?

Unknown. Cannot test with latest Go release.

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/jaypipes/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/jaypipes/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build786177804=/tmp/go-build -gno-record-gcc-switches"

What did you do?

Ran go mod vendor with the following go.mod file which uses the "v1.17.0-rc.1" semver tag for the require pinning of the k8s.io/kubernetes module:

(snipped for brevity)

module k8s.io/autoscaler/cluster-autoscaler

go 1.12

require (
...
	k8s.io/api v0.0.0
	k8s.io/apiextensions-apiserver v0.0.0
	k8s.io/apimachinery v0.0.0
	k8s.io/apiserver v0.0.0
	k8s.io/cli-runtime v0.0.0
	k8s.io/client-go v0.0.0
	k8s.io/cloud-provider v0.0.0
	k8s.io/cluster-bootstrap v0.0.0
	k8s.io/code-generator v0.0.0
	k8s.io/component-base v0.0.0
	k8s.io/cri-api v0.0.0
	k8s.io/csi-translation-lib v0.0.0
	k8s.io/klog v1.0.0
	k8s.io/kube-aggregator v0.0.0
	k8s.io/kube-controller-manager v0.0.0
	k8s.io/kube-proxy v0.0.0
	k8s.io/kube-scheduler v0.0.0
	k8s.io/kubectl v0.0.0
	k8s.io/kubelet v0.0.0
	k8s.io/kubernetes v1.17.0-rc.1
	k8s.io/legacy-cloud-providers v0.0.0
	k8s.io/metrics v0.0.0
	k8s.io/node-api v0.0.0
	k8s.io/sample-apiserver v0.0.0
	k8s.io/sample-cli-plugin v0.0.0
	k8s.io/sample-controller v0.0.0
)

replace (
...
	k8s.io/api => k8s.io/kubernetes/staging/src/k8s.io/api v1.17.0-rc.1
	k8s.io/apiextensions-apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.17.0-rc.1
	k8s.io/apimachinery => k8s.io/kubernetes/staging/src/k8s.io/apimachinery v1.17.0-rc.1
	k8s.io/apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiserver v1.17.0-rc.1
	k8s.io/cli-runtime => k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v1.17.0-rc.1
	k8s.io/client-go => k8s.io/kubernetes/staging/src/k8s.io/client-go v1.17.0-rc.1
	k8s.io/cloud-provider => k8s.io/kubernetes/staging/src/k8s.io/cloud-provider v1.17.0-rc.1
	k8s.io/cluster-bootstrap => k8s.io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.17.0-rc.1
	k8s.io/code-generator => k8s.io/kubernetes/staging/src/k8s.io/code-generator v1.17.0-rc.1
	k8s.io/component-base => k8s.io/kubernetes/staging/src/k8s.io/component-base v1.17.0-rc.1
	k8s.io/cri-api => k8s.io/kubernetes/staging/src/k8s.io/cri-api v1.17.0-rc.1
	k8s.io/csi-translation-lib => k8s.io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.17.0-rc.1
	k8s.io/gengo => k8s.io/gengo v0.0.0-20190822140433-26a664648505
	k8s.io/heapster => k8s.io/heapster v1.2.0-beta.1
	k8s.io/klog => k8s.io/klog v1.0.0
	k8s.io/kube-aggregator => k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator v1.17.0-rc.1
	k8s.io/kube-controller-manager => k8s.io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.17.0-rc.1
	k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a
	k8s.io/kube-proxy => k8s.io/kubernetes/staging/src/k8s.io/kube-proxy v1.17.0-rc.1
	k8s.io/kube-scheduler => k8s.io/kubernetes/staging/src/k8s.io/kube-scheduler v1.17.0-rc.1
	k8s.io/kubectl => k8s.io/kubernetes/staging/src/k8s.io/kubectl v1.17.0-rc.1
	k8s.io/kubelet => k8s.io/kubernetes/staging/src/k8s.io/kubelet v1.17.0-rc.1
	k8s.io/legacy-cloud-providers => k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.17.0-rc.1
	k8s.io/metrics => k8s.io/kubernetes/staging/src/k8s.io/metrics v1.17.0-rc.1
	k8s.io/node-api => k8s.io/kubernetes/staging/src/k8s.io/node-api v1.17.0-rc.1
	k8s.io/repo-infra => k8s.io/repo-infra v0.0.1-alpha.1
	k8s.io/sample-apiserver => k8s.io/kubernetes/staging/src/k8s.io/sample-apiserver v1.17.0-rc.1
	k8s.io/sample-cli-plugin => k8s.io/kubernetes/staging/src/k8s.io/sample-cli-plugin v1.17.0-rc.1
	k8s.io/sample-controller => k8s.io/kubernetes/staging/src/k8s.io/sample-controller v1.17.0-rc.1
	k8s.io/system-validators => k8s.io/system-validators v1.0.4
	k8s.io/utils => k8s.io/utils v0.0.0-20191114184206-e782cd3c129f
...
)

which produces an error:

go mod vendor
go: finding k8s.io/kubernetes/staging/src/k8s.io/cloud-provider v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/sample-apiserver v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/kubelet v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/client-go v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/node-api v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/sample-controller v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/cloud-provider/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/sample-apiserver/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/csi-translation-lib/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/cli-runtime/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/kubelet/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/client-go/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/node-api/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/kube-aggregator/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/sample-controller/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/kube-controller-manager/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/kube-proxy v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/apiextensions-apiserver/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/kube-proxy/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/kube-scheduler v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/kube-scheduler/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/metrics v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/cluster-bootstrap/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/metrics/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/apiserver v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/apiserver/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/sample-cli-plugin v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/sample-cli-plugin/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/cri-api v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/cri-api/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/apimachinery v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/apimachinery/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/legacy-cloud-providers/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/code-generator v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/code-generator/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/kubectl v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/kubectl/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/api v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/api/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/component-base v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/component-base/v1.17.0-rc.1
go: error loading module requirements

Please note that the v1.17.0-rc.1 tag corresponds to an actual Git commit:

jaypipes@thelio:~/go/src/k8s.io/kubernetes$ git rev-parse v1.17.0-rc.1^{}
663a303b6fcec07dfd05657583df337aba329d13

However, if I attempt to pin the k8s.io/kubernetes require entry to a pseudoversion that corresponds to a Git commit that is not referenced to a Git tag, everything works perfectly well:

A go.mod with the pseudoversion require entry that points to a non-tag-referenced Git commit:

module k8s.io/autoscaler/cluster-autoscaler

go 1.12

require (
...
	k8s.io/api v0.0.0
	k8s.io/apimachinery v0.0.0
	k8s.io/client-go v0.0.0
	k8s.io/cloud-provider v0.0.0
	k8s.io/component-base v0.0.0
	k8s.io/klog v1.0.0
	k8s.io/kubernetes v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/legacy-cloud-providers v0.0.0
)

replace (
...
	k8s.io/api => k8s.io/kubernetes/staging/src/k8s.io/api v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/apiextensions-apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/apimachinery => k8s.io/kubernetes/staging/src/k8s.io/apimachinery v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiserver v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/cli-runtime => k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/client-go => k8s.io/kubernetes/staging/src/k8s.io/client-go v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/cloud-provider => k8s.io/kubernetes/staging/src/k8s.io/cloud-provider v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/cluster-bootstrap => k8s.io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/code-generator => k8s.io/kubernetes/staging/src/k8s.io/code-generator v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/component-base => k8s.io/kubernetes/staging/src/k8s.io/component-base v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/cri-api => k8s.io/kubernetes/staging/src/k8s.io/cri-api v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/csi-translation-lib => k8s.io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/gengo => k8s.io/gengo v0.0.0-20190822140433-26a664648505
	k8s.io/heapster => k8s.io/heapster v1.2.0-beta.1
	k8s.io/klog => k8s.io/klog v1.0.0
	k8s.io/kube-aggregator => k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/kube-controller-manager => k8s.io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a
	k8s.io/kube-proxy => k8s.io/kubernetes/staging/src/k8s.io/kube-proxy v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/kube-scheduler => k8s.io/kubernetes/staging/src/k8s.io/kube-scheduler v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/kubectl => k8s.io/kubernetes/staging/src/k8s.io/kubectl v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/kubelet => k8s.io/kubernetes/staging/src/k8s.io/kubelet v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/legacy-cloud-providers => k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/metrics => k8s.io/kubernetes/staging/src/k8s.io/metrics v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/node-api => k8s.io/kubernetes/staging/src/k8s.io/node-api v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/repo-infra => k8s.io/repo-infra v0.0.1-alpha.1
	k8s.io/sample-apiserver => k8s.io/kubernetes/staging/src/k8s.io/sample-apiserver v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/sample-cli-plugin => k8s.io/kubernetes/staging/src/k8s.io/sample-cli-plugin v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/sample-controller => k8s.io/kubernetes/staging/src/k8s.io/sample-controller v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/system-validators => k8s.io/system-validators v1.0.4
	k8s.io/utils => k8s.io/utils v0.0.0-20191114184206-e782cd3c129f
)

then go mod vendor runs perfectly fine.

What did you expect to see?

Expected go mod vendor to be able to properly resolved semver-tagged require or replace entries.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions