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

时间:2011-11-02 18:02:26

标签: git git-push

我已经看到了几个similar questions,但未能解决我的问题,所以再问一遍。

我在现有的启用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'

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

  1. 进入回购并确保一切都可写,如建议的here

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

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

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

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

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

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

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

    我是否需要使用我的仓库做一些事情才能使NO_MMAP选项有效,或者您认为问题还有其他问题吗?

6 个答案:

答案 0 :(得分:4)

对某些操作来说,Git有点内存密集,交换内存使用以改善磁盘或网络性能。 (例如,参见关于此other SO question的一些讨论。)

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

我的建议,如果你不熟悉你所引用的wiki / blog-post上提出的各种建议,那就是转移到GitHub或Bitbucket。 (我认为这些帖子提供了技术上准确的解决方案,FWIW。)Bitbucket提供免费无限制的私有存储库,因此没有真正的成本理由将Dreamhost用于您的Git托管。

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

答案 1 :(得分:3)

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

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

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

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

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

答案 2 :(得分:1)

如果您使用Dreamhost服务器来保存裸存储库,则可以在本地添加和提交,然后将.git目录rsync同步到DH。完成后,进入服务器的[存储库名称] .git / config并将core.bare从false更改为true。

如果您想在服务器上使用工作树,并不确定您要做什么,它还没有找到我。

答案 3 :(得分:1)

Mac 用户

就我而言,我使用了 index.html,它把 brew install git 中的 git 搞砸了

运行 xcode 修复了问题

答案 4 :(得分:0)

我遇到了这个问题,但是我的问题是由Capfile的问题引起的 - capistrano已经更新,而且更改没有反映在capfile中。

将capfile更新为已修复的最新标准......

答案 5 :(得分:0)

我也遇到了这个错误。对我来说,解决方案是增加服务器上的内存容量。这样做之后,错误消失了。