[英]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.