我们面临着一个奇怪的情况,一个本地克隆仓库只有65MB,但是在服务器上(GitBlit,但这并不重要)却有12GB大小。我尝试了不同的想法来解决这个问题,以下是列表:
- 对服务器上的每个分支都执行“git ls-tree -r -t -l --full-name HEAD > stats.txt”命令,并收集信息。 - 使用“cut -c53-60 | grep -v '-' | awk '{ sum += $1 } END { print sum }'”分析结果,总结所有提交的文件大小。 - 结果显示大约150MB。
所以我们没有找到任何包含大文件的提交。
我的本地目录“.git/objects/pack”中有一个pack文件,目前大小为17MB(经过GC后,之前为21MB)。服务器上的pack文件目前大小为12GB。
我按照正常方式克隆了该仓库:“git clone https://myserver.mycompancy.com/gitblit/r/projectID/projectID.git”,并得到了本地副本。为确保,我执行了“git fetch --all”命令,但没有变化。
那么我们该如何找出服务器上pack文件更大的原因呢?GitBlit有一个自动GC运行程序,它会打包7天以上未使用的loose对象。
更新:我按建议在本地克隆和服务器上执行了“git verify-pack -v”命令,以下是结果(仅作为统计数据):
- 结果行数
本地:60,156
服务器:16,456,844
因此,服务器上的pack文件长度大约是本地文件的270倍,这就解释了pack文件大小的差异。接下来应该采取什么步骤找出更多行的原因?统计数据的哪些方面更有趣呢?
- 对服务器上的每个分支都执行“git ls-tree -r -t -l --full-name HEAD > stats.txt”命令,并收集信息。 - 使用“cut -c53-60 | grep -v '-' | awk '{ sum += $1 } END { print sum }'”分析结果,总结所有提交的文件大小。 - 结果显示大约150MB。
所以我们没有找到任何包含大文件的提交。
我的本地目录“.git/objects/pack”中有一个pack文件,目前大小为17MB(经过GC后,之前为21MB)。服务器上的pack文件目前大小为12GB。
我按照正常方式克隆了该仓库:“git clone https://myserver.mycompancy.com/gitblit/r/projectID/projectID.git”,并得到了本地副本。为确保,我执行了“git fetch --all”命令,但没有变化。
那么我们该如何找出服务器上pack文件更大的原因呢?GitBlit有一个自动GC运行程序,它会打包7天以上未使用的loose对象。
更新:我按建议在本地克隆和服务器上执行了“git verify-pack -v”命令,以下是结果(仅作为统计数据):
- 结果行数
本地:60,156
服务器:16,456,844
因此,服务器上的pack文件长度大约是本地文件的270倍,这就解释了pack文件大小的差异。接下来应该采取什么步骤找出更多行的原因?统计数据的哪些方面更有趣呢?
git gc
了吗? - Claudio