[英]reading github.com/username/kit/go/database/go/database/go.mod at revision go/database/v1.0.1: unknown revision go/database/v1.0.1
[英]Go modules replaces an explicit version with v0.0.0-<timestamp>-<revision> in go.mod
我最近在我的 Go 项目中添加了一个功能,这可能会破坏使用它的其他项目。 我决定通过添加一个匹配的 git 标签2.0.0
(以前是1.xx
)来为这个项目“A”增加一个主要版本。 在我需要它的另一个项目“B”中,我更新了它的go.mod
文件,如下所示:
module gitlab.mydomain.com/namespace/B
go 1.12
require (
gitlab.mydomain.com/namespace/A v2.0.0
)
如您所见,我特别提到了v2.0.0
,但是一旦我运行 B,A 的版本就会被v0.0.0-<timestamp>-<revision>
覆盖。
我确保标签存在于遥控器中。
我在这里缺少什么?
从主要版本2
( v2
及更高版本)开始,您必须修改导入路径,您必须将主要版本添加为导入路径的后缀。 您必须将包导入为:
import "gitlab.mydomain.com/namespace/A/v2"
这也必须出现在go.mod
如:
require gitlab.mydomain.com/namespace/A/v2 v2.0.0
由于主要版本代表 Semver 中不兼容的更改,因此它们的导入路径也必须不同(相同的导入路径表示相同的依赖项)。 这是导入兼容性规则:
如果旧包和新包具有相同的导入路径,
新包必须与旧包向后兼容。
在Go Modules Wiki 中阅读更多相关信息:为什么主版本号必须出现在导入路径中?
以及博客文章: Go 博客:Go 模块:v2 及更高版本
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.