開發主要版本更新

當您在潛在的新版本中所做的更改無法保證模組使用者的向後相容性時,您必須更新到主要版本。例如,如果您更改了模組的公共 API,導致使用模組舊版本的客戶端程式碼中斷,您將進行此更改。

注意:每種釋出型別——主要版本、次要版本、補丁版本或預釋出版本——對模組使用者都具有不同的含義。這些使用者依靠這些差異來理解發布對其自身程式碼帶來的風險級別。換句話說,在準備釋出時,請確保其版本號準確反映了自上一個釋出以來的更改性質。有關版本號的更多資訊,請參閱模組版本編號

另請參閱

主要版本更新的注意事項

您只應在絕對必要時才更新到新的主要版本。主要版本更新對您和您的模組使用者來說都意味著重大的變動。當您考慮主要版本更新時,請考慮以下事項:

  • 向您的使用者清楚說明發布新主要版本對您支援舊主要版本意味著什麼。

    舊版本是否已棄用?是否像以前一樣受到支援?您是否會維護舊版本,包括進行錯誤修復?

  • 準備好承擔兩個版本的維護:舊版本和新版本。例如,如果您在一個版本中修復了錯誤,通常會將這些修復移植到另一個版本中。

  • 請記住,從依賴管理角度來看,新的主要版本是一個新模組。您釋出後,您的使用者需要更新才能使用新模組,而不是簡單地升級。

    這是因為新的主要版本具有與前一個主要版本不同的模組路徑。例如,對於模組路徑為 example.com/mymodule 的模組,v2 版本將具有模組路徑 example.com/mymodule/v2。

  • 當您開發新的主要版本時,您還必須更新所有從新模組匯入包的程式碼中的匯入路徑。您的模組使用者如果想升級到新的主要版本,也必須更新他們的匯入路徑。

主要版本釋出的 branching

在準備開發新主要版本時處理原始碼最直接的方法是在上一個主要版本的最新版本處分支儲存庫。

例如,在命令提示符中,您可以更改到模組的根目錄,然後在那裡建立一個新的 v2 分支。

$ cd mymodule
$ git checkout -b v2
Switched to a new branch "v2"

Diagram illustrating a repository branched from master to v2

一旦您將原始碼分支,您需要對新版本的原始碼進行以下更改:

  • 在新版本的 go.mod 檔案中,將新的主要版本號附加到模組路徑,如以下示例所示:

    • 現有版本:example.com/mymodule
    • 新版本:example.com/mymodule/v2
  • 在您的 Go 程式碼中,更新所有匯入模組中包的匯入包路徑,將主要版本號附加到模組路徑部分。

    • 舊匯入語句:import "example.com/mymodule/package1"
    • 新匯入語句:import "example.com/mymodule/v2/package1"

有關釋出步驟,請參閱釋出模組