English ▾ 主題 ▾ 最新版本 ▾ git-index-pack 最後更新於 2.52.0

名稱

git-index-pack - 為現有的封裝歸檔建立索引檔案

概要

git index-pack [-v] [-o <index-file>] [--[no-]rev-index] <pack-file>
git index-pack --stdin [--fix-thin] [--keep] [-v] [-o <index-file>]
		  [--[no-]rev-index] [<pack-file>]

描述

從指定的檔案讀取封裝歸檔 (.pack),為其建立封裝索引檔案 (.idx),並可選擇為該封裝寫入反向索引 (.rev)。封裝歸檔連同其封裝索引,隨後可放置在 Git 儲存庫的 objects/pack/ 目錄中。

選項

-v

顯示詳細執行過程,包含進度狀態。

-o <index-file>

將產生的封裝索引寫入指定檔案。若無此選項,封裝索引檔案名稱將從封裝歸檔檔案名稱衍生,將 .pack 取代為 .idx(若封裝歸檔名稱不是以 .pack 結尾,程式會失敗)。

--rev-index
--no-rev-index

提供此旗標時,會產生對應於給定封裝的反向索引(.rev 檔案)。若同時給定 --verify,則確保現有的反向索引正確無誤。優先於 pack.writeReverseIndex 設定。

--stdin

提供此旗標時,封裝會改為從標準輸入 (stdin) 讀取,並將副本寫入 <pack-file>。若未指定 <pack-file>,則封裝會寫入目前 Git 儲存庫的 objects/pack/ 目錄中,並以根據封裝內容決定的預設名稱命名。若未指定 <pack-file>,建議使用 --keep 以防止此行程與 git repack 之間產生競爭狀態。

--fix-thin

修正由 git pack-objects --thin 產生的「精簡 (thin)」封裝(詳見 git-pack-objects[1]),方法是將差量物件所依賴的排除物件加入封裝中。此選項僅在與 --stdin 搭配使用時才有意義。

--keep

在將索引移至最終目的地之前,為關聯的封裝檔案建立一個空的 .keep 檔案。此選項通常在使用 --stdin 時是必要的,以防止同時運行的 git repack 行程在參考 (refs) 更新以使用封裝內的物件之前,刪除剛建立的封裝和索引。

--keep=<msg>

類似 --keep,在將索引移至最終目的地前建立 .keep 檔案。但與其建立空檔案,此選項會將 <msg> 及隨後的換行字元 (LF) 寫入 .keep 檔案中。該 <msg> 訊息之後可在所有 .keep 檔案中搜尋,以找出已過期的檔案。

--index-version=<version>[,<offset>]

此選項僅供測試套件使用。它允許強制指定所產生封裝索引的版本,並強制對位於給定偏移量之後的物件使用 64 位元索引項目。

--strict[=<msg-id>=<severity>…​]

若封裝包含損壞的物件或連結,則終止程式。可傳入以逗號分隔的 <msg-id>=<severity> 清單,以變更某些潛在問題的嚴重性,例如 --strict="missingEmail=ignore,badTagName=error"。關於 <msg-id><severity> 的可能值,請參閱 git-fsck[1] 中關於 fsck.<msg-id> 設定選項的條目。

--progress-title

僅供內部使用。

設定進度條的標題。預設標題為 "Receiving objects",若指定了 --stdin,則標題為 "Indexing objects"。

--check-self-contained-and-connected

若封裝包含損壞的連結則終止程式。僅供內部使用。

--fsck-objects[=<msg-id>=<severity>…​]

若封裝包含損壞的物件則終止程式,但與 --strict 不同的是,它不會因損壞的連結而中斷。若封裝包含一個指向不存在的 .gitmodules blob 的樹狀物件 (tree),則會在封裝/索引檔案名稱的雜湊值之後列印出該 blob 的雜湊值(供呼叫者檢查,詳見「備註」)。

可傳入以逗號分隔的 <msg-id>=<severity> 清單,以變更某些潛在問題的嚴重性,例如 --fsck-objects="missingEmail=ignore,badTagName=ignore"。關於 <msg-id><severity> 的可能值,請參閱 git-fsck[1] 中關於 fsck.<msg-id> 設定選項的條目。

--threads=<n>

指定解析差量時要生成的執行緒數量。此功能要求 index-pack 必須在編譯時啟用 pthreads,否則此選項會被忽略並顯示警告。此目的在於減少多處理器機器上的封裝時間。然而,差量搜尋視窗所需的記憶體總量將會乘以執行緒數量。指定 0 將會讓 Git 自動偵測 CPU 數量並最多使用 3 個執行緒。

--max-input-size=<size>

若封裝大於 <size> 則終止程式。

--object-format=<hash-algorithm>

指定封裝使用的物件格式(雜湊演算法)。有效值為 sha1 以及(若已啟用)sha256。預設為當前儲存庫的演算法(由 extensions.objectFormat 設定),若未設定或不在儲存庫內則為 sha1

此選項不能與 --stdin 同時使用。

注意:目前 SHA-256 儲存庫與 SHA-1 儲存庫之間沒有互通性。

從歷史上看,我們曾警告 SHA-256 儲存庫在引入此類互通功能時,可能需要向後不相容的變更。今天,我們預期只會有相容的變更。此外,若證明此類變更確實必要,預期今天由 Git 建立的 SHA-256 儲存庫,在未來的 Git 版本中仍可使用而不會造成資料遺失。

--promisor[=<message>]

在提交封裝索引前,為此封裝建立一個 .promisor 檔案。在使用 --fix-thin 寫入 promisor 封裝時特別有幫助,因為封裝名稱在完全寫入之前尚未確定。若提供 <message>,則該內容會寫入 .promisor 檔案以供未來參考。詳情請參閱 部分複製 (partial clone)

此外,若給定封裝中的物件參照了非 promisor 物件(在儲存庫中),則將該些非 promisor 物件重新打包進 promisor 封裝。這避免了儲存庫中存在可透過 promisor 物件存取的非 promisor 物件的情況。

要求不得指定 <pack-file>。

注意事項

一旦建立索引,用於封裝/索引檔案名稱的雜湊值會被列印到標準輸出。若同時使用了 --stdin,則此值會加上 "pack\t" 或(若成功建立了新的 .keep 檔案)"keep\t" 前綴。這對於移除作為鎖定以防止上述 git repack 競爭的 .keep 檔案非常有用。

GIT

git[1] 套件的一部分