?
? ????? PHP ??? ???? ??? ?? ??
git-pack-objects - 創(chuàng)建一個打包的對象存檔
git pack-objects [-q | --progress | --all-progress] [--all-progress-implied] [--no-reuse-delta] [--delta-base-offset] [--non-empty] [--local] [--incremental] [--window=<n>] [--depth=<n>] [--revs [--unpacked | --all]] [--stdout | base-name] [--shallow] [--keep-true-parents] < object-list
從標準輸入讀取對象列表,并將具有指定基本名稱的一個或多個打包歸檔文件寫入磁盤,或?qū)⒋虬鼩w檔文件寫入標準輸出。
打包歸檔是在兩個存儲庫之間傳輸一組對象以及訪問高效的歸檔格式的有效方式。在打包的壓縮文件中,一個對象或者以壓縮整體存儲,或者與其他對象不同。后者通常被稱為三角洲。
壓縮存檔格式(.pack)被設計為獨立的,因此可以在沒有任何進一步信息的情況下將其解壓縮。因此,三角洲依賴的每個對象必須出現(xiàn)在包中。
生成一個包索引文件(.idx),以便快速,隨機地訪問包中的對象。將索引文件(.idx)和打包歸檔文件(.pack)放在$ GIT_OBJECT_DIRECTORY(或$ GIT_ALTERNATE_OBJECT_DIRECTORIES 上的任何目錄)的 pack /子目錄中,可以使 Git 從包歸檔中讀取。
git unpack-objects
命令可以讀取打包的歸檔文件,并將包中包含的對象展開為“一個文件一個對象”格式; 這通常是通過智能拉取命令完成的,當一個組件被即時創(chuàng)建以便其同伴進行有效的網(wǎng)絡傳輸時。
base-name
寫入成對的文件(.pack 和 .idx),使用<base-name>確定創(chuàng)建的文件的名稱。使用此選項時,一對中的兩個文件將寫入<base-name> - <SHA-1>。{pack,idx}文件。<SHA-1>是基于包內(nèi)容的散列,并被寫入命令的標準輸出。
--stdout
將包內(nèi)容(將寫入.pack 文件的內(nèi)容)寫入標準輸出。
--revs
從標準輸入讀取修訂參數(shù),而不是單個對象名稱。修改參數(shù)的處理方式git rev-list
與--objects
標志使用其commit
參數(shù)來構建輸出對象列表的方式相同。結(jié)果列表中的對象已打包。除了修訂版本,--not
或者--shallow <SHA-1>
線路也被接受。
--unpacked
這意味著--revs
。處理從標準輸入中讀取的修訂參數(shù)列表時,請將打包的對象限制為尚未打包的對象。
--all
這意味著--revs
。除了從標準輸入中讀取的修訂參數(shù)列表之外,假設所有的ref refs/
都被指定為包括在內(nèi)。
--include-tag
如果它們引用的對象包含在生成的包文件中,請包含未標記的注釋標記。將新標記發(fā)送到本地 Git 客戶端可能會很有用。
--window=<n> --depth=<n>
這兩個選項會影響包中包含的對象如何使用增量壓縮進行存儲。對象首先在內(nèi)部按類型,大小和可選名稱進行排序,并與--window 中的其他對象進行比較,以查看使用增量壓縮是否節(jié)省空間。 - 深度限制最大深度; 使得它太深,會影響解包方的性能,因為需要多次應用增量數(shù)據(jù)才能獲得必要的對象。--window 的默認值是10,--depth 是50。
--window-memory=<n>
此選項提供額外的限制--window
; 窗口大小將動態(tài)縮小,以便不占用<n>
內(nèi)存中的多個字節(jié)。在大型和小型對象混合使用的存儲庫中,這對于不會用大型窗口內(nèi)存不足的情況很有用,但仍可以利用大型窗口來查看較小的對象。大小可以加上“k”,“m”或“g”后綴。--window-memory=0
使內(nèi)存使用無限。默認值取自pack.windowMemory
配置變量。
--max-pack-size=<n>
在不常見的情況下,您可能無法在文件系統(tǒng)上創(chuàng)建大于特定大小的文件,并且可以使用此選項告訴命令將輸出包文件拆分為多個獨立的包文件,每個包文件不大于給定大小。大小可以加上“k”,“m”或“g”后綴。允許的最小尺寸限制為1 MiB。此選項可防止創(chuàng)建位圖索引。默認值是無限的,除非配置變量pack.packSizeLimit
被設置。
--honor-pack-keep
此標志會導致已經(jīng)在本地包中具有.keep 文件的對象被忽略,即使它本來被打包。
--incremental
這個標志會導致一個包中已有的對象被忽略,即使它本來被打包。
--local
該標志會導致從備用對象庫中借用的對象被忽略,即使它本來被打包。
--non-empty
如果它至少包含一個對象,則只創(chuàng)建一個打包歸檔文件。
--progress
當連接到終端時,默認情況下,標準錯誤流中會報告進度狀態(tài),除非指定-q。即使標準錯誤流未定向到終端,此標志也會強制進度狀態(tài)。
--all-progress
如果指定了--stdout,則會在對象計數(shù)和壓縮階段顯示進度報告,但在寫入階段會禁止進度報告。原因在于,在某些情況下,輸出流直接鏈接到另一個命令,該命令可能希望在處理傳入包數(shù)據(jù)時顯示其自身的進度狀態(tài)。該標志與--progress 相似,只是它強制執(zhí)行寫入階段的進度報告,即使使用了--stdout 也是如此。
--all-progress-implied
這用于暗示進展顯示被激活時的進度。不像--all-progress 這個標志實際上并沒有強制任何進度顯示。
-q
該標志使命令不報告其在標準錯誤流上的進度。
--no-reuse-delta
在具有現(xiàn)有包的存儲庫中創(chuàng)建打包歸檔時,該命令將重新使用現(xiàn)有的變化量。這有時會導致稍微不理想的包裝。該標志告訴命令不要重復使用現(xiàn)有的增量,而是從頭開始計算它們。
--no-reuse-object
該標志告訴命令根本不重復使用現(xiàn)有對象數(shù)據(jù),包括未分類的對象,強制重新壓縮所有內(nèi)容。這意味著 - 不重用 - 增量。僅適用于需要對打包數(shù)據(jù)進行不同壓縮級別的批量執(zhí)行的模糊情況。
--compression=<n>
指定生成包中新壓縮數(shù)據(jù)的壓縮級別。如果未指定,則包壓縮級別首先由 pack.compression 確定,然后通過 core.compression 確定,默認為-1,否則 zlib 默認值(如果兩者均未設置)。如果您想要強制所有數(shù)據(jù)的統(tǒng)一壓縮級別,請?zhí)砑?-no-reuse-object,而不考慮源。
--thin
通過省略發(fā)件人和收件人之間的公共對象來創(chuàng)建“瘦”包,以減少網(wǎng)絡傳輸。這個選項只有在與--stdout 結(jié)合使用時才有意義。
注意:精簡包通過省略必需的對象來違反打包的歸檔格式,因此 Git 無法使其自包含。使用git index-pack --fix-thin
(參見 git-index-pack [1])來恢復自包含的屬性。
--shallow
優(yōu)化將使用淺倉庫提供給客戶端的包。這個選項與--thin 相結(jié)合,可以以速度為代價產(chǎn)生更小的包裝。
--delta-base-offset
打包歸檔可以將 delta 的基本對象表示為20字節(jié)的對象名稱或流中的偏移量,但古代版本的 Git 不理解后者。默認情況下,git pack-objects
只使用以前的格式以獲得更好的兼容性。該選項允許命令使用后一種格式來實現(xiàn)緊湊性。根據(jù)平均增量鏈長度的不同,這個選項通常會使得到的包文件縮小3-5%。
注意:當他們將對象放到你的版本庫中時,默認情況下,在現(xiàn)代 Git 中,瓷器命令git gc
(參見 git-gc [1])git repack
(參見 git-repack [1])將傳入此選項。所以git bundle
當它創(chuàng)建一個 bundle 時(參見 git-bundle [1])。
--threads=<n>
指定搜索最佳增量匹配時產(chǎn)生的線程數(shù)。這要求使用 pthread 編譯包對象,否則該選項將被忽略并顯示警告。這是為了減少多處理器機器的打包時間。然而,增量搜索窗口所需的內(nèi)存量乘以線程數(shù)量。指定0將導致 Git 自動檢測 CPU 的數(shù)量并相應地設置線程數(shù)量。
--index-version=<version>,<offset>
這僅供測試套件使用。它允許強制生成的包索引的版本,并強制位于給定偏移量之上的對象上的64位索引條目。
--keep-true-parents
有了這個選項,被移植物掩蓋的父類仍然包裝。
git-rev-list[1] git-repack[1] git-prune-packed[1]