我已经将一个旧的 cvs 存储库(大约 13GB 大)迁移到了 git(大约 2.7GB 大)。但我无法用我的 32 位工作站克隆存储库。我收到内存不足错误(malloc 无法分配大约 6 MB)。有没有可能解决这个问题?
remote: counting objects: 1227276, done.
remote: Compressing objects: 100% (217540/217540), done.
Receiving objects: 100% (1227276/1227276), 2,66GiB | 791.00KiB/s, done.
remote: Total 1227276 (delta 787852), reused 1227276 (delta 787852)
Resolving deltas: 100% (787852(787852), done.
fatal: Out of memory, malloc failed (tried to allocate 6838754 bytes)
fatal: remote did not send all necessary objects
服务器:Rhel63 64bit;Wokstation:Win XP 32bit,2GB RAM;Git:两者都是 1.8.3.4。
Update1:现在我已经将服务器上的 2,8GB 大包文件重新打包成 500MB 大包文件。但在客户端,它对克隆没有影响。它只创建一个 2,8GB 的大包文件。我如何告诉 git clone 进程用户使用较小的包文件或在它们放置在服务器上时创建包文件?- 对我来说有趣的方面:接收到的对象的大小减少到 1,5GB。
更新2:现在经过一些研究和分析时间,我认为主要问题是 git clone 进程无法处理我的 32 位工作站上的一个大包文件。但是如何配置克隆过程以获取多个较小大小的包文件?在服务器端,它可以repack
很好地与命令配合使用,但不会影响客户端。
更新 3:现在我有一个 1.1GB 大的裸 git repo(通过使用git gc --aggressive --prune=now
)。但是内存不足的错误仍然存在。所以我试图拆分回购。因此我使用git rm
了 with git commit -a
。因此,两个新的裸仓库的大小都等于旧的中央仓库。但现在从工作站克隆确实有效。内存消耗现在恒定 < 300MB。之前它的增长势不可挡。
现在我的问题是:为什么克隆过程现在可以顺利完成?