共用方式為


登錄參考

概觀

本文說明每種登錄的實作詳細數據。 具體而言,此檔案涉及每種登錄的建議配置,以及各自 版本資料庫的預期內容。

注意

本文包含如何實作自定義登錄的資訊。 如需在專案中取用自定義登錄的資訊,請參閱使用登錄 一文

Git 登錄

Git 登錄中的基準檔案配置

最上層欄位

baseine.json 檔案中的最上層對像是字典,此字典中的每個索引鍵都是名為baseline 。 由於 Git 登錄的實作詳細數據,因此必須有名稱為 「default」 的 具名基準 存在,而且其中包含登錄中所有埠與其基準版本的對應。

名字 類型 描述
default BaselineObject Git 登錄所需的預設基準。
具名基準 BaselineObject 其他基準。 功能變數名稱會對應至基準名稱。

BaselineObject

基準對像是字典,每個索引鍵都會對應至登錄中的埠名稱,而其值則是最新版的埠。

名字 類型 描述
埠名稱 BaselineVersionObject 埠名稱與其最新版本的對應

BaselineVersionObject

名字 類型 描述
baseline 字串 對應至登錄中最新可用埠版本的字串。
port-version 整數 對應至登錄中埠最新埠版本的整數

Git 登錄中 baseline.json 檔案的範例

在登錄中包含名為 foo1.0.0#1版本的單一埠中,baseline.json 檔案內容應該是:

{
  "default": {
    "foo": { 
      "baseline": "1.0.0", 
      "port-version": 1
    }
  }
}

Git 登錄中的版本檔案配置

versions 目錄包含登錄中包含套件版本的所有資訊,以及從存放庫歷程記錄擷取這些版本的方法。

最上層欄位

名字 類型 描述
versions VersionObject[] 版本物件的陣列。 包含登錄歷程記錄中每個埠版本的專案。

VersionObject

名字 類型 描述
git-tree 字串 用來擷取埠內容的 Git 樹狀結構 SHA
version
version-semver
version-date
version-string
字串 上游版本資訊
埠版本 整數 埠檔案修訂

Git 登錄版本檔案的範例

{
  "versions": [
    {
      "git-tree": "963060040c3ca463d17136e39c7317efb15eb6a5",
      "version": "1.2.0",
      "port-version": 0
    },
    {
      "git-tree": "548c90710d59c174aa9ab10a24deb69f1d75ff8f",
      "version": "1.1.0",
      "port-version": 0
    },
    {
      "git-tree": "67d60699c271b7716279fdea5a5c6543929eb90e",
      "version": "1.0.0",
      "port-version": 0
    }
  ]
}

取得 git-tree SHA

vcpkg 會使用 Git 的功能來擷取其認可歷程記錄中包含的特定埠版本。 使用的方法是從存放庫擷取 git-tree 物件,如埠的版本檔案中所指定。

Git 登錄中的每個埠目錄都有與其相關聯的唯一 SHA(稱為版本檔案中的 git-tree)。 SHA 是使用目錄的內容來計算;每次將變更認可至修改目錄的存放庫時,都會重新計算其SHA。

Git 可讓您在其歷程記錄的任何時間點擷取指定目錄的內容,前提是您知道其特定 SHA。 藉由使用這項功能,vcpkg 可以使用其各自的 SHA 來編製特定埠版本的索引(git-tree)。

若要在任何指定的修訂中取得通訊埠目錄的 SHA,可以使用下列 Git 命令:

git -C <path/to/ports> ls-tree --format='%(objectname)' <commit sha> -- <portname>

例:

git -C %VCPKG_ROOT%/ports ls-tree --format='%(objectname)' HEAD -- curl
6ef1763f3cbe570d6378632c9b5793479c37fb07

此命令會傳回目前修訂時包含 curl 埠之目錄的 SHA(HEAD)。

您可以使用 命令 git show <git-tree>來顯示 git-tree 的內容:

git show 6ef1763f3cbe570d6378632c9b5793479c37fb07
tree 6ef1763f3cbe570d6378632c9b5793479c37fb07

0005_remove_imp_suffix.patch
0020-fix-pc-file.patch
0022-deduplicate-libs.patch
cmake-config.patch
cmake-project-include.cmake
dependencies.patch
export-components.patch
portfile.cmake
redact-input-vars.diff
usage
vcpkg-cmake-wrapper.cmake
vcpkg.json

或具有 git show <git-tree>:<file>的特定檔案內容:

git show 6ef1763f3cbe570d6378632c9b5793479c37fb07:usage
curl is compatible with built-in CMake targets:

    find_package(CURL REQUIRED)
    target_link_libraries(main PRIVATE CURL::libcurl)

在手動程式中使用這些 Git 命令來管理資料庫檔案是一項困難的工作。 基於這個理由,我們建議使用 x-add-version 命令,只要存放庫遵循建議的 登錄結構,就會將程序自動化。 如需如何在 Git 登錄中發佈埠的範例,請參閱 教學課程:使用 Git 將套件發佈至私人 vcpkg 登錄一文。

檔案系統登錄

檔系統登錄中的基準檔案配置

最上層欄位

baseine.json 檔案中的最上層對像是字典,此字典中的每個索引鍵都是名為baseline 。 基準應該包含登錄中所有埠與其基準版本的對應。

名字 類型 描述
具名基準 BaselineObject 其他基準。 功能變數名稱會對應至基準名稱。

BaselineObject

基準對像是字典,每個索引鍵都會對應至登錄中的埠名稱,而其值則是最新版的埠。

名字 類型 描述
埠名稱 BaselineVersionObject 埠名稱與其最新版本的對應

BaselineVersionObject

名字 類型 描述
baseline 字串 對應至登錄中最新可用埠版本的字串。
port-version 整數 對應至登錄中埠最新埠版本的整數

檔系統登錄中基準檔案的配置與 Git 登錄相同。 檔系統不需要 default 基準的唯一差異。

Git 登錄中 baseline.json 檔案的範例

{
  "2024-12-01": {
    "foo": {
      "baseline": "1.0.0",
      "port-version": 1
    }
  }
}

Git 登錄中的版本檔案配置

versions 目錄包含登錄中包含套件版本的所有資訊,以及從文件系統位置擷取這些版本的方法。

最上層欄位

名字 類型 描述
versions VersionObject[] 版本物件的陣列。 包含登錄中每個埠版本的專案。

VersionObject

名字 類型 描述
path 字串 對應版本的埠檔案所在的文件系統位置
version
version-semver
version-date
version-string
字串 上游版本資訊
埠版本 整數 埠檔案修訂

指定登錄 path 時,可以使用 $ 字元來參考登錄的根目錄。 否則,可以改用絕對路徑。

檔系統登錄版本檔案的範例

{
  "versions": [
    {
      "path": "$/ports/foo/1.2.0",
      "version": "1.2.0",
      "port-version": 0
    },
    {
      "path": "$/ports/foo/1.1.0",
      "version": "1.1.0",
      "port-version": 0
    },
    {
      "path": "$/ports/foo/1.0.0",
      "version": "1.0.0",
      "port-version": 0
    }
  ]
}

後續步驟

以下是接下來要嘗試的一些工作: