如何產生 git-tree

這個問題切中核心 🎯。在 vcpkg registry 裡,git-tree 不是隨便寫的字串,而是 Git 物件樹的 SHA,代表某個 port 目錄在 Git repo 中的快照。


📌 如何產生 git-tree

  1. 確保 registry 是 Git repo
    • 你的本地 registry(例如 M:/GitHub/LevenShe/vcpkg)必須是用 git init 建立的,並且有 commit。
  2. 把 port 複製到 ports/
    • 例如你新增 ports/pathinfo/,裡面有 vcpkg.jsonCONTROL
  3. 提交變更
    cd M:\GitHub\LevenShe\vcpkg
    git add ports/pathinfo
    git commit -m "Add pathinfo port"
    
  4. 取得 git-tree SHA
    • 用以下指令查詢:
      git rev-parse HEAD:ports/pathinfo
      
      這會輸出一個 SHA(例如 58bca5dd798b3ffe786ddc267639be884fca275b),就是 git-tree
    • 或者用:
      git ls-tree HEAD ports/pathinfo
      
      會顯示該目錄的 tree SHA。
  5. 更新 versions/p-/pathinfo.json
    {
      "versions": [
        {
          "git-tree": "58bca5dd798b3ffe786ddc267639be884fca275b",
          "version-string": "1.0.0",
          "port-version": 0
        }
      ]
    }
    

⚠️ 注意事項

  • git-tree ≠ commit SHA:它是目錄的 tree SHA,不是整個 repo 的 commit SHA。
  • 每次修改 port:只要你改了 ports/pathinfo,重新 commit 後就要更新 git-tree
  • 版本管理:如果只是修正 build script,但版本號不變,記得把 port-version +1。

👉 總結:
手動複製到 ports/ 後,要用 Git commit,然後用 git rev-parse HEAD:ports/套件名 取得 tree SHA,填到 versions/*.jsongit-tree 欄位。

Also See

File8FileLast Modified
vcpkg-local-how-tovcpkg-local-how-to1:22 AM - December 07, 2025
vcpkg_checkervcpkg_checker1:22 AM - December 07, 2025
vcpkg 指令總覽表vcpkg 指令總覽表1:22 AM - December 07, 2025
模組化開發-用 CMake + VCpkg 封裝並重用 C++ 函式庫模組化開發-用 CMake + VCpkg 封裝並重用 C++ 函式庫8:20 PM - December 06, 2025
模組化開發-VCpkg工具模組化開發-VCpkg工具8:20 PM - December 06, 2025
查詢目前vcpkg registry所在路徑查詢目前vcpkg registry所在路徑8:20 PM - December 06, 2025
本地 `src` vs. `vcpkg_from_git`本地 src vs. vcpkg_from_git8:20 PM - December 06, 2025
使用 vcpkg x-add-version 搭配 Git 或目錄結構工具,自動建立與維護本地 vcpkg registry使用 vcpkg x-add-version 搭配 Git 或目錄結構工具,自動建立與維護本地 vcpkg registry8:20 PM - December 06, 2025