如何在32位计算机上克隆git仓库?

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 64位; 工作站:Win XP 32位,2GB RAM; Git版本:1.8.3.4(两个系统上都是)。
更新1:现在我已经将服务器上2.8GB的打包文件重新打包成500MB大小的文件。但在客户端,克隆操作并没有受到影响。它仍然只创建一个2.8GB的大型打包文件。如何让git克隆进程使用较小的打包文件或者按照服务器上的方式创建打包文件呢?对我来说,一个有趣的方面是:接收到对象的大小减小到了1.5GB。
更新2:经过一些调查和分析,现在我认为主要问题是git克隆过程无法处理我32位工作站上的单个大型打包文件。但是我该如何配置克隆过程以便获得大小更小的多个打包文件呢?在服务器端,使用repack命令很好用,但对客户端没有影响。
更新3:现在我有一个1.1GB大小的裸git repo(通过使用git gc --aggressive --prune=now)。但内存不足错误仍然存在。所以我尝试将repo拆分。我使用git rmgit commit -a完成。因此,两个新的裸repo的大小等于旧的中心repo。但现在从工作站克隆却可以正常进行。内存消耗现在保持在<300MB。之前这个数字不断增加。
现在我的问题是:为什么克隆过程没有出现问题了呢?

你有没有查看一些关于调整Git的其他类似问题?:https://dev59.com/XGkv5IYBdhLWcg3w3Uk0#12808378 https://dev59.com/iWsz5IYBdhLWcg3w3bxb https://github.com/gitextensions/gitextensions/issues/1632 - Display Name is missing
是的,但那些都不能帮助我。我已经添加了错误消息,这是我尝试 git clone 时得到的。 - user2451418
现在我已经尝试了几个git配置设置,例如´pack.packSizeLimit = 256m pack.windowMemory = 256m pack.deltaCacheSize =256m core.packedGitLimit = 256m core.packedGitWindowSize = 256m transfer.unpackLimit = 100000´,就像互联网上的类似帖子中所建议的那样。但错误消息仍然存在。只有大小从6mb缩小到4mb,而git无法分配。我已经在服务器、客户端和克隆过程中进行了配置。但是没有任何作用。 - user2451418
你尝试过部分克隆吗?https://docs.gitlab.com/ee/topics/git/partial_clone.html - Sergei Krivonos
1个回答

1
如果需要,您可以将.git目录存档,然后将其scp到本地,然后解压缩即可得到克隆的存储库。一旦使用git命令工作正常,然后使用“git remote add”链接到远程存储库。此时应该能够进行拉取和推送。但是,如果您需要重复此过程,则可能不完全令人满意。

谢谢。是的,这绝对是一个机会。但问题在于我需要让30个人都能够使用该存储库。因此,这种解决方法可能太不方便了。必须有一种处理3GB存储库的方法。最坏的情况是我认为我必须将存储库分成几部分。但问题在于,这样做可能会对项目团队造成太大的变化。因为大多数人只熟悉cvs。 - user2451418

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接