Go模块替换为本地模块的特定版本

时间:2019-08-22 13:38:56

标签: go go-modules

我有一个go.mod文件,看起来像这样:

module someName

go 1.13

require (
    .
    .
    golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4
    localpackage v0.0.0
)

replace localpackage => ../localpackage

这按预期工作!我不知道如何添加特定版本或将哈希提交到replace指令!

例如:

replace localpackage => ../localpackage v1.0.0

replace localpackage => ../localpackage v0.0.0-20190731182444-35453ccff3d6

这样做会导致错误:

  

替换模块目录路径“ ../localpackage”不能具有版本

错误非常明显,我不应该将版本添加到本地替换中。我检查了wiki,但找不到答案!

问题:

是否可以添加这种replace注释,如何添加?我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

如错误所示:当replace指令指向本地文件夹时,您无法指定版本。不能保证,也不要求替换文件夹包含版本控制系统的文件,仅具有Go源代码的“贪吃蛇”是完全有效的。因此,在许多情况下,指定版本是没有意义的。

但是,例如,如果您的本地文件夹是git存储库的克隆,则可以简单地将其切换为所需的版本。例如。在该本地文件夹中执行git checkout v1.0.0以切换到该版本,然后将使用该版本。