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