最後衝刺!儲存庫升級與 opam 2.0.0 路線圖

幾天前,我們發布了 opam 2.0.0~rc4,並說明這個最終候選版本預計會升級為 2.0.0,同時升級 opam 套件儲存庫。所以這裡有關於這方面的詳細資訊!

如果您是 opam 使用者,並且不維護 opam 套件

  • 建議您儘快升級) ,並習慣變更和新功能

  • 所有在 opam 1.2.2 中安裝的套件,在 2.0.0~rc4 上應該都可以正常安裝(如果您發現有不能安裝的,請回報!)

  • 如果您在9 月 17 日之前沒有更新,您接收到的更新和新套件數量可能會受到限制¹

那麼 9 月 17 日會發生什麼事?

  • Opam 2.0.0~rc4 正式發布為 2.0.0

  • ocaml/opam-repository Github 儲存庫上,會 fork 一個 1.2 分支,並且 2.0.0 分支會合併到 master 分支

  • 從那時起,提交到 ocaml/opam-repository 的 pull-request 需要是 2.0.0 格式。 如果重要,可以合併對 1.2 儲存庫的修正:在這種情況下,需要針對 1.2 分支提出 pull request。

  • opam 網站預設會顯示 2.0.0 儲存庫(https://opam.ocaml.org/2.0-preview/ 變成 https://opam.ocaml.org/)

  • 1.2 和 2.0 的 http 儲存庫(如 opam update 使用的)也會相應移動,並進行適當的重新導向

給套件維護者的建議

  • 在 9 月 17 日之前,提交到 ocaml/opam-repository 的 master 分支的 pull-request 需要是 1.2.2 格式

  • 所有 PR 的 CI 檢查,會確保套件在 1.2.2 和 2.0.0 上都能通過。在 9 月 17 日之後,只會檢查 2.0.0(只有在需要相關修復時才會檢查 1.2.2)。

  • 儲存庫的 2.0.0 分支將包含您套件定義的自動更新的 2.0.0 版本

  • 您可以使用 opam 2.0.0 發布 1.2 套件,方法是安裝 opam-publish.0.3.5(建議執行 opam pin opam-publish 0.3.5

  • 您應該只需要保留 opam 1.2 安裝用於更複雜的設定(多個套件,或者如果您需要在本機測試 1.2 套件安裝)。在這種情況下,您可能想要使用別名,例如 alias opam.1.2="OPAMROOT=$HOME/.opam.1.2 ~/local/bin/opam.1.2。在這種情況下,您可能還應該停用 opam 2.0.0 的自動環境更新 (opam init --disable-shell-hook)

  • opam-publish.2.0.0~beta 有一個完全改進的介面,以及許多新功能,例如為多個套件提交單個 PR。但是,它只會提交2.0 格式的 pull-request。目前,它只會向儲存庫的 2.0.0 分支提交 PR,但在 9 月 17 日之前,仍然偏好將 1.2 格式的套件推送至 master 分支。

  • 還建議在此日期之前將原始碼中的 opam 檔案保留為 1.2 格式,以免 opam 1.2 使用者中斷 opam pin add --dev-repo 的使用。小型的 opam-package-upgrade 外掛程式可用於將單個 1.2 opam 檔案升級為 2.0 格式。

  • ocaml-ci-script 已經切換到 opam 2.0.0。為了繼續測試 opam 1.2.2,您可以在 .travis.yml 檔案中設定變數 OPAM_VERSION=1.2.2

給自訂儲存庫維護者的建議

  • opam admin upgrade 命令可用於將您的儲存庫升級為 2.0.0 格式。 我們建議使用它,否則使用 opam 2.0.0 的用戶端每次都會在本地進行升級。加入 --mirror 選項以繼續同時提供兩個版本,並進行自動重新導向。

  • 您可自行決定何時/是否要將您的基礎儲存庫切換為 2.0.0 格式。您將受益於許多新的可能性和安全性功能,但這將排除早期 opam 版本的使用者,因為沒有向後轉換工具。

¹ 對於造成不便,我們深感抱歉。如果可以保持 1.2.2 儲存庫的維護更長的時間,我們會很高興;儲存庫維護者做得非常棒,但他們沒有足夠的資源來同時維護兩個版本。