2 回答

TA貢獻1829條經驗 獲得超6個贊
如何移動到版本 2 有兩個選項:分支和子目錄。
這兩個選項使一個版本可以依賴另一個版本。例如,當您實施版本 2 時,您可以更新版本 1 以依賴于版本 2(但保持相同的 v1 API)。然后,您只需要為您的庫實現一種邏輯。根據項目類型、您要提供的支持以及它需要的修復,這可能適合您也可能不適合您。
分支機構
master:?A?->?B?(v1.0.0)?->?D?(v1.0.1) ?????????????????????????\ v2:???????????????????????->?C?(v2.0.0)
在這種情況下:
你在分支上開始你的項目
master
,做一些提交(
A
和B
),標簽
v1.0.0
。您決定進行重大更改。因此,您創建了一個新分支 (?
git checkout -b v2
) 并進行了重大更改。您的 go.mod 現在必須更新,以便模塊名稱以/v2
(它本質上是一個新模塊?。┙Y尾。您決定修復 中的錯誤
v1
,因此您返回該分支,進行新提交并標記新v1
版本。
當用戶需要您的模塊的特定版本時,go
將在兩個分支中查找哪個提供了正確的模塊。
子目錄
不想在分支上開發怎么辦?您可以為每個主要版本創建一個子目錄。版本 1 位于頂層,然后新版本移至子目錄:
go.mod (module example.com/foo)
foo.go
v2/
? go.mod (module example.com/foo/v2)
? foo.go
當您使用新版本標記此 repo 時,v1將使用頂級版本。v2標簽將使用v2子目錄。

TA貢獻1871條經驗 獲得超8個贊
來自模塊 wiki 的發布模塊(v2 或更高版本)部分:
有兩種可供選擇的機制來發布 v2 或更高版本的模塊。請注意,使用這兩種技術,當模塊作者推送新標簽時,新模塊版本可供消費者使用。使用創建發布的示例
v3.0.0
,兩個選項是:
主要分支:更新文件以在指令中的模塊路徑末尾
go.mod
包含一個(例如,)。更新模塊中的 import 語句以也使用(eg,?)。用 標記發布。/v3
module
module github.com/my/module/v3
/v3
import "github.com/my/module/v3/mypkg"
v3.0.0
Go 版本 1.9.7+、1.10.3+ 和 1.11+ 能夠正確使用和構建使用這種方法創建的 v2+ 模塊,而無需更新尚未選擇加入模塊的消費者代碼(如“語義導入版本控制”?部分)。
注意:不需要創建新分支。例如,如果您之前已經在 master 上發布,并且更愿意在 master 上標記 v3.0.0,這也是一個可行的選擇。[...]
[...]
主要子目錄:創建一個新的
v3
子目錄(例如,my/module/v3
)并go.mod
在該子目錄中放置一個新文件。模塊路徑必須以/v3
.?將代碼復制或移動到?v3
子目錄中。更新模塊中的 import 語句以也使用/v3
(eg,?import "github.com/my/module/v3/mypkg"
)。用 標記發布v3.0.0
。
但是,該部分中還有其他值得回顧的詳細信息。
- 2 回答
- 0 關注
- 146 瀏覽
添加回答
舉報