问题描述
我想要一个尚未转换为使用模块的Go软件包的特定版本,我想在我的go.mod
文件中要求它。具体来说,该软件包是“ github.com/docker/docker/pkg/system@v19.03.13”
运行以下命令时,得到以下输出:
$ go get -v github.com/docker/docker/pkg/system@v19.03.13
go: found github.com/docker/docker/pkg/system in github.com/docker/docker v17.12.0-ce-rc1.0.20200916142827-bd33bbf0497b+incompatible
如您所见,版本v17.12.0-ce
是下载的,而不是v19.03.13
。我确实也注意到“ + incompatible”后缀,但是我不确定这与该问题有任何关系。根据{{3}}
go命令向主版本2或更高版本的版本(不带有go.mod文件)添加+不兼容的后缀。 +不兼容表示版本与主版本号较低的版本属于同一模块;因此,尽管go命令可能会破坏构建,但它可能会自动升级到更高版本的+不兼容版本。
所以我知道此软件包没有go.mod
文件,但是下载的版本(17.x)大于2,所以我认为不是+incompatible
的问题。 / p>
我的问题是:当我指定版本v19.03.13
时,为什么Go安装v17.12.0-ce
?
docs是我要使用的版本
This是已下载的版本
解决方法
go.mod
pseudo-version中列出的版本对于不是go模块的存储库无关紧要。我不确定go
是如何从提交中派生出v17.12.0-ce-rc1.0.20200916142827
的,而不是v19.03.13-20200916142827
或v0.0.0-20200916142827
的,但这不是问题,只要go本身可以复制并解析结果。
如果查看尾随的提交哈希,您将拥有bd33bbf0497b
,它是v19.03.13
标签的正确提交ID。