【问题标题】:Go modules replace with a specific version of a local moduleGo 模块替换为本地模块的特定版本
【发布时间】:2019-08-22 22:09:16
【问题描述】:

我有一个如下所示的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,但找不到答案!

问题:

是否可以添加这种replacement 以及如何添加?我在这里错过了什么?

【问题讨论】:

    标签: go go-modules


    【解决方案1】:

    正如错误所说:当替换指令指向本地文件夹时,您无法指定版本。替换文件夹中包含版本控制系统的文件并不能保证,也不是要求,仅拥有 Go 源代码的“快照”是完全有效的。所以在很多情况下,指定版本是没有意义的。

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

    【讨论】:

    • 感谢您的回答。在使用未托管在 github.com 上的私有模块时,执行版本控制的正确方法是什么?
    • @Abdullah 为需要在应用程序中使用的每个版本维护一个单独的文件夹。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 2015-07-27
    • 2019-02-01
    • 2012-06-10
    相关资源
    最近更新 更多