Git推"错误:索引包死于信号9"

Max*_*ams 6 git git-push

我已经看到了几个类似的 问题,但是还没能解决我的问题,所以再问一遍.

我在现有的启用git的项目中添加了大量新文件,并尝试将其推送.当我执行推送时,它会压缩它们,然后写入它们,然后当它达到%100时,它会因此错误而失败:

error: index-pack died of signal 9 332.28 MiB | 5712 KiB/s   
error: pack-objects died with strange error
error: failed to push some refs to     '<username>@<my repo location'
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的事情:

  1. 进入回购并确保一切都是可写的,就像这里建议的那样

  2. binary -delta在.gitattributes中的某些文件类型上设置选项

  3. 将一些文件夹移出(和git提交删除),以便稍后再单独添加它们.

我有点想法......:/有什么建议吗?感谢任何建议 - 最多

编辑 - 我已经发现这是由于dreamhost因为过多的内存消耗而导致推送(我通过将我的app文件夹复制到dreamhost上的repo服务器并从那里进行推送).

找到了一些页面, - 谈论NO_MMAP=1git中的一个选项来帮助防止这种情况,但是他们在配置git时会谈到它.我可以在现有的git安装中设置此选项吗?它是git-inited应用程序的配置的一部分正在进行推送还是它是repo配置的一部分?

编辑2 - 按照上面的页面上的说明,我下载并制作了我自己的本地git二进制文件,并设置了NO_MMAP = 1选项.

我确定这些是在我的路径中安装了dreamhost的版本之前,并且"哪个git"显示了我的本地版本,到目前为止一切都很好.但是,我得到完全相同的问题.

我是否需要使用我的仓库做一些事情来使NO_MMAP选项工作,或者你认为问题是什么?

Emi*_*Sit 6

Git 对于某些操作来说是内存密集型的,通过牺牲内存使用来获得改进的磁盘或网络性能。(例如,请参阅有关其他 SO 问题的一些讨论。)

在这种情况下,我认为您和您的同事正在有效地进行不同的成本权衡:您正在使用专业管理的 Git 托管服务(例如GitHubBitBucket)进行权衡,以获得可感知的财务节省或其他一些便利(可能是部署) ?)。

如果您不习惯遵循您引用的 wiki/博客文章中的建议,我的建议是转移到 GitHub 或 Bitbucket。(我认为这些帖子提供了技术上准确的解决方案,FWIW。)Bitbucket 提供免费的、无限制的私有存储库,因此没有真正的成本理由使用 Dreamhost 进行 Git 托管。

如果您需要某种部署解决方案来配合托管,您可以设计一些可以推送并自动将工作目录更新到 Dreamhost 进行托管的工具,而无需承担托管 Git 存储库(以及所有历史记录)的全部成本)在 Dreamhost 上。


JGu*_*rtz 6

有时,由于负载问题,企业 github 也会发生这种情况。我发现一个好方法是将克隆拆分为两个操作,这样可以减轻服务器的负载。

首先,做一个浅克隆: git clone --depth 1 myRepo.git

接下来,输入克隆,并获取所有其余历史记录以制作完整克隆: cd myRepo && git fetch --unshallow

如果您有一个不支持 --unshallow 标志的旧版本 git,那么您可以改为执行类似git fetch --depth=1000000或其他适当大的数字。

此博客文章中讨论了更多替代方案:https : //blogs.atlassian.com/2014/05/handle-big-repositories-git/


归档时间:

查看次数:

22686 次

最近记录:

7 年,7 月 前