4

我已经将一个旧的 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。之前它的增长势不可挡。

现在我的问题是:为什么克隆过程现在可以顺利完成?

4

1 回答 1

1

如果有的话,您可以归档 .git 目录,然后在本地 scp,然后取消归档。所以有你的克隆存储库。

一旦它使用 git 命令,然后使用“git remote add”链接到远程存储库。那时你应该能够拉和推。但是,如果您必须重复此过程,我不确定这是否完全令人满意。

于 2013-08-15T23:04:22.920 回答