【发布时间】:2011-11-28 07:24:15
【问题描述】:
我正在尝试将大型 (1.4GB) Git 存储库克隆到具有 384MB RAM 的 32 位 Debian VM。我正在使用 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
我的问题如下:
- 这是一个客户端大小(克隆端)的问题,还是应该在我从中克隆的存储库中解决?
-
在这两种情况下,我能做些什么来使克隆成功吗?网上很多潜在的解决方案都涉及以下部分/全部内容,在这种情况下都不可接受:
- 实质上更改存储库的内容(即删除大文件)
- 为正在执行克隆的 VM 提供更多 RAM
- 为正在执行克隆的 VM 提供 64 位虚拟 CPU
- 带外传输(例如使用 Rsync 或 SFTP 传输 .git 目录)
提前致谢。
【问题讨论】:
-
您是否检查过您有足够的磁盘空间(在克隆机器上)来容纳整个包文件(900 MB 左右)?
-
Romain:是的 - 我在进行克隆的机器上至少有 5.5GB 可用空间。
-
是的,当我在存储库中使用大型二进制文件时,这让我感到很痛苦。如果这是原因,请查看 git-bup 的替代方法