我用不同的值进行了一些测试。这太大了,无法对 twalberg 的答案进行评论。
我的公司有一个代码库,曾经是svn、mercurial,现在是git。它已有 10 年历史,已有 21,000 次提交。
打包前为 3.1 GB。重新打包后,它缩小到以下值:
(每次在 3.1GB 文件夹的新克隆上运行重新打包)。
git repack -a -d --depth=50 --window=10 -f
141.584 MB
git repack -a -d --depth=250 --window=1000 -f
110.484 MB
git repack -a -d --depth=500 --window=1000 -f
110.204 MB
在我的四核 Mac 上,它们分别花费了大约 5 分钟、15 分钟和 30 分钟。
Update:
我进行了第二次重新打包(250,1000),并用 500 和 1000 重新打包,看看新的 3.1gb 存储库和已经重新打包的 110mb 存储库之间是否有任何区别。
git repack -a -d --depth=250 --window=1000 -f
110.484 MB
git repack -a -d --depth=500 --window=1000 -f
110.212 MB
结论:重新打包 500、1000 会生成一个 110.2 MB 的文件,无论该文件是否已打包。
Update2:
我进一步好奇,在已重新打包的存储库上运行较低值的重新打包是否会导致大小增加。
git repack -a -d --depth=500 --window=1000 -f
110.204 MB
git repack -a -d --depth=50 --window=10 -f
142.056 MB
结论:重新打包导致存储库大小从 110 MB 回升至约 140 MB