[英]Git repository on server is much bigger than local clone with all branches
我們目前面臨一種奇怪的情況,即服務器上只有65MB的本地克隆存儲庫(GitBlit,但這無關緊要)12 GB的大小。 我嘗試了不同的想法,這里可能會出錯,這里是列表:
git ls-tree -r -t -l --full-name HEAD > stats.txt
,並收集該信息。 cut -c53-60 <filename> | grep -v '-' | awk '{ sum += $1 } END { print sum }'
分析結果 cut -c53-60 <filename> | grep -v '-' | awk '{ sum += $1 } END { print sum }'
cut -c53-60 <filename> | grep -v '-' | awk '{ sum += $1 } END { print sum }'
總結了所有提交的所有文件大小。 所以我們沒有找到任何提交大文件的提交。
我的本地目錄.git/objects/pack
有一個目前為17MB的包文件(在GC之后,它是21MB之前)。 服務器上的包文件當前大小為12 GB。
我以正常方式克隆了存儲庫: git clone https://myserver.mycompancy.com/gitblit/r/projectID/projectID.git
並獲得了本地副本。 可以肯定的是,我已經完成了git fetch --all
而沒有改變。
那么我們怎樣才能找到服務器上的包文件更大的原因呢? GitBlit有一個自動GC運行,可以打包超過7天的松散物體。
更新:我在我的本地克隆和服務器上按照建議執行了命令git verify-pack -v
,這里是結果(僅作為統計信息):
因此,服務器上的包文件的幅度(~270倍)更長,這就解釋了包中的差異。 下一步要找到更多線路的原因應該是什么? 統計的某些方面更有趣嗎?
在GitHub上查看我的問題。 以下是我們所做的總結:
git verify-pack -v
得到了一些關於pack文件的詳細信息(這就是服務器repo更大的原因)(感謝@ max360)。 git gc --prune --agressive
,前12 GB包文件縮小到~110 MB大小。 我們不知道出了什么問題,導致存儲庫膨脹,但至少我們找到了一種方法來再次收縮它。
@James Moger在GitHub票證中解釋說,在GitBlit上執行GC是一個實驗性功能,並且因為使用JGit而不是Git二進制文件,GitBlit完成的GC的結果可能與上面的git gc
命令不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.