?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
git-repack - 在存儲(chǔ)庫(kù)中打包解包的對(duì)象
git repack [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [--window=<n>] [--depth=<n>] [--threads=<n>]
該命令用于將當(dāng)前未駐留在“pack”中的所有對(duì)象組合到一個(gè)包中。它也可以用來(lái)重新組織現(xiàn)有的包裝成單一,更高效的包裝。
一個(gè)包是對(duì)象的集合,單獨(dú)壓縮,應(yīng)用增量壓縮,存儲(chǔ)在單個(gè)文件中,并具有關(guān)聯(lián)的索引文件。
軟件包用于減少鏡像系統(tǒng),備份引擎,磁盤(pán)存儲(chǔ)等的負(fù)載。
-a
而不是逐步打包解包的對(duì)象,將所有引用的東西打包到一個(gè)包中。打包用于私人開(kāi)發(fā)的存儲(chǔ)庫(kù)時(shí)特別有用。使用-d
。這將清理git prune
留下的物體,但git fsck --full --dangling
顯示為懸掛。
請(qǐng)注意,通過(guò)啞協(xié)議獲取的用戶(hù)必須獲取整個(gè)新包才能獲取任何包含的對(duì)象,而不管該包中已有多少個(gè)其他對(duì)象。
-A
和-a
一樣,除非-d
被使用。然后,前一包中的任何無(wú)法訪(fǎng)問(wèn)的對(duì)象變成松散的,未包裝的對(duì)象,而不是留在舊包中。無(wú)法到達(dá)的物體從未故意添加到包中,即使在重新包裝時(shí)也是如此。此選項(xiàng)可防止無(wú)法訪(fǎng)問(wèn)的對(duì)象被保留在舊包中而被刪除。相反,松散的不可訪(fǎng)問(wèn)的對(duì)象將在下一次git gc
調(diào)用時(shí)根據(jù)正常的過(guò)期規(guī)則進(jìn)行修剪。參見(jiàn)git-gc [1]。
-d
打包之后,如果新創(chuàng)建的包使某些現(xiàn)有包冗余,請(qǐng)移除冗余包。還可以運(yùn)行git prune-packed
以刪除多余的松散對(duì)象文件。
-l
將--local
選項(xiàng)傳遞給git pack-objects
。參見(jiàn)git-pack-objects。
-f
將--no-reuse-delta
選項(xiàng)傳遞給git-pack-objects
git-pack-objects。
-F
將--no-reuse-object
選項(xiàng)傳遞給git-pack-objects
git-pack-objects。
-q
將-q
選項(xiàng)傳遞給git pack-objects
。參見(jiàn)git-pack-objects。
-n
不要使用更新服務(wù)器信息git update-server-info
。此選項(xiàng)將跳過(guò)通過(guò)HTTP或FTP更新發(fā)布此存儲(chǔ)庫(kù)(或其直接副本)所需的本地目錄文件。參見(jiàn)git-update-server-info。
--window=<n> --depth=<n>
這兩個(gè)選項(xiàng)會(huì)影響包中包含的對(duì)象如何使用增量壓縮進(jìn)行存儲(chǔ)。對(duì)象首先在內(nèi)部按類(lèi)型,大小和可選名稱(chēng)進(jìn)行排序,并與其他對(duì)象進(jìn)行比較,--window
以查看使用增量壓縮是否節(jié)省空間。--depth
限制最大增量深度; 使得它太深,會(huì)影響解包方的性能,因?yàn)樾枰啻螒?yīng)用增量數(shù)據(jù)才能獲得必要的對(duì)象。--window的默認(rèn)值是10,--depth是50。
--threads=<n>
該選項(xiàng)通過(guò)傳遞給git pack-objects
。
--window-memory=<n>
此選項(xiàng)提供額外的限制--window
; 窗口大小將動(dòng)態(tài)縮小,以便不占用<n>
內(nèi)存中的多個(gè)字節(jié)。在大型和小型對(duì)象混合使用的存儲(chǔ)庫(kù)中,這對(duì)于不會(huì)用大型窗口內(nèi)存不足的情況很有用,但仍可以利用大型窗口來(lái)查看較小的對(duì)象。大小可以加上“k”,“m”或“g”后綴。--window-memory=0
使內(nèi)存使用無(wú)限。默認(rèn)值取自pack.windowMemory
配置變量。請(qǐng)注意,實(shí)際內(nèi)存使用量將是限制乘以git-pack-objects使用的線(xiàn)程數(shù)量。
--max-pack-size=<n>
每個(gè)輸出包文件的最大大小。大小可以加上“k”,“m”或“g”后綴。允許的最小尺寸限制為1 MiB。如果指定,則可能會(huì)創(chuàng)建多個(gè)包文件,這也會(huì)阻止創(chuàng)建位圖索引。默認(rèn)值是無(wú)限的,除非配置變量pack.packSizeLimit
被設(shè)置。
-b --write-bitmap-index
編寫(xiě)一個(gè)可達(dá)性位圖索引作為重新包裝的一部分。這只適用于-a
or 時(shí)才有意義-A
,因?yàn)槲粓D必須能夠引用所有可到達(dá)的對(duì)象。此選項(xiàng)覆蓋設(shè)置repack.writeBitmaps
。如果創(chuàng)建多個(gè)包文件,此選項(xiàng)不起作用。
--pack-kept-objects
.keep
重新包裝時(shí)在文件中包含對(duì)象。請(qǐng)注意,我們?nèi)匀徊粫?huì).keep
在pack-objects
完成后刪除包。這意味著我們可能會(huì)復(fù)制對(duì)象,但是這可以在并發(fā)推送或提取時(shí)使用此選項(xiàng)。此選項(xiàng)通常僅在使用-b
or 編寫(xiě)位圖時(shí)才有用repack.writeBitmaps
,因?yàn)樗纱_保位圖packfile具有必需的對(duì)象。
--unpack-unreachable=<when>
松開(kāi)不可觸及的對(duì)象時(shí),不要打擾任何比以前更老的物體<when>
。這可以用來(lái)優(yōu)化任何可以立即被后續(xù)修剪的對(duì)象的寫(xiě)入git prune
。
-k --keep-unreachable
當(dāng)與它一起使用時(shí)-ad
,現(xiàn)有包中的任何不可達(dá)對(duì)象都將被添加到包文件的末尾,而不是被刪除。另外,任何不可及的松散物體都將被包裝(并且它們的松散對(duì)象被移除)。
默認(rèn)情況下,該命令將--delta-base-offset
選項(xiàng)傳遞給git pack-objects
; 這通常會(huì)導(dǎo)致更小的包,但生成的包與Git版本比1.4.4版本不兼容。如果您需要直接或通過(guò)啞HTTP協(xié)議來(lái)共享您的存儲(chǔ)庫(kù)中的古老Git版本,那么您需要將配置變量設(shè)置repack.UseDeltaBaseOffset
為“false”并重新打包。通過(guò)本地協(xié)議從舊Git版本訪(fǎng)問(wèn)不受此選項(xiàng)的影響,因?yàn)樵诖饲闆r下根據(jù)需要即時(shí)執(zhí)行轉(zhuǎn)換。
git-pack-objects[1] git-prune-packed[1]