我正在尝试将一个巨大的(1.4GB)Git存储库克隆到一个只有384MB RAM的32位Debian虚拟机中。 我使用的是Git 1.7.2.5,使用SSH协议进行克隆('git clone user@host.com:/my/repo')。
克隆失败,并显示以下错误信息:
remote: Counting objects: 18797, done.
remote: warning: subobtimal pack - out of memory
remote: Compressing objects: 100% (10363/10363), done.
fatal: out of memory, malloc failed (tried to allocate 905574791 bytes)
fatal: index-pack failed
我尝试减少Git在主机端重打包时使用的内存量:
git config pack.windowMemory 10m
git config pack.packSizeLimit 20m
git repack -a -d
我的问题如下:
- 这是一个客户端(克隆端)的问题还是应该在我正在克隆的仓库中解决?
无论哪种情况,有什么办法可以使克隆成功吗?网上很多潜在的解决方案都涉及以下一些/所有的事情,但在这种情况下都是不可接受的:
- 实质性更改存储库的内容(例如删除大文件)
- 为执行克隆的虚拟机提供更多的 RAM
- 为执行克隆的虚拟机提供 64 位虚拟 CPU
- 通过越带频道传输(例如使用 Rsync 或 SFTP 传输 .git 目录)
预先感谢。