名稱

git-backfill - 在部分克隆中下載缺失的物件

概要

git backfill [--min-batch-size=<n>] [--[no-]sparse]

描述

無blob的部分克隆是使用 git clone --filter=blob:none 建立的,然後配置本地倉庫,以便 Git 客戶端避免下載 blob 物件,除非本地操作需要它們。這最初意味著克隆和後續的 fetch 操作會下載可達的提交和樹,但不會下載 blob。稍後改變 HEAD 指標的操作,例如 git checkoutgit merge,可能需要下載缺失的 blob 才能完成其操作。

在最壞的情況下,計算 blob 差異的命令,例如 git blame,會變得非常慢,因為它們以單blob請求下載缺失的 blob,以滿足 Git 命令所需的缺失物件。這會導致多次下載請求,並且 Git 伺服器無法對這些物件提供增量壓縮。

git backfill 命令提供了一種方式,讓使用者請求 Git 下載缺失的 blob(可帶可選的過濾器),以便代表檔案歷史版本的缺失 blob 可以分批下載。backfill 命令嘗試透過將同一路徑上出現的 blob 進行分組來最佳化請求,有望在伺服器傳送的 packfile 中實現良好的增量壓縮。

透過這種方式,git backfill 提供了一種將大型克隆分解為更小塊的機制。首先使用 git clone --filter=blob:none 進行無blob的部分克隆,然後在本地倉庫中執行 git backfill,提供了一種透過多次較小的網路呼叫來下載所有可達物件的方法,而不是在克隆時下載整個倉庫。

預設情況下,git backfill 下載從 HEAD 提交可達的所有 blob。此集合可以透過各種選項進行限制或擴充套件。

此命令是實驗性的。其行為未來可能會改變。

選項

--min-batch-size=<n>

指定從伺服器請求的缺失物件批處理的最小大小。此大小可能會被給定路徑上看到的最後一組 blob 超出。預設的最小批處理大小是 50,000。

--[no-]sparse

僅當物件出現在與當前稀疏檢出匹配的路徑時才下載。如果稀疏檢出功能已啟用,則假定使用 --sparse,並且可以使用 --no-sparse 停用它。

另請參閱

GIT

Git[1] 套件的一部分

scroll-to-top