Git push "ошибка: пакет индекса умер от сигнала 9" - PullRequest
5 голосов
/ 02 ноября 2011

Я видел пару похожих вопросов на этот вопрос, но не смог решить мою проблему, поэтому прошу еще раз.

Я добавил загрузку новых файлов в существующий проект с поддержкой 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. зайдя в репозиторий и убедившись, что все доступно для записи, как предложено здесь

  2. установив параметр binary -delta для некоторых типов файлов в .gitattributes

  3. удаление некоторых папок (и git фиксирует удаление) с целью их последующего добавления по отдельности.

У меня нет идей ...: / Есть предложения?Благодарен за любой совет - макс.

РЕДАКТИРОВАТЬ - с тех пор я обнаружил, что это из-за того, что dreamhost убивает толчок из-за чрезмерного потребления памяти (я сделал это, скопировав папку своего приложения на сервер репо на dreamhost и выполнивтолчок оттуда).

Я нашел некоторые страниц , - которые говорят о опции NO_MMAP=1 в git, чтобы помочь предотвратить это, но они говорят об этом с точки зрения настройкимерзавец, когда он установлен.Могу ли я установить эту опцию в существующей установке git?Является ли это частью конфигурации для git-inited приложения, которое выполняет push, или это является частью конфигурации для репо?

EDIT 2 - следуя инструкциям на странице выше, я скачал и сделал свой собственныйлокальные двоичные файлы git с установленной опцией NO_MMAP = 1.

Я удостоверился, что они были до того, как на моем пути были установлены версии Dreamhost, и "which git" показывает мою локальную версию, пока все хорошо.Но у меня точно такая же проблема.

Нужно ли что-то делать с моим репо, чтобы опция NO_MMAP работала, или проблема в чем-то еще, как вы думаете?

Ответы [ 5 ]

4 голосов
/ 03 ноября 2011

Git требует некоторого объема памяти для определенных операций, торгуя использованием памяти для повышения производительности диска или сети.(См., Например, некоторые обсуждения по этому другому вопросу SO .)

В этом случае, я думаю, что вы и ваши коллеги фактически находите другой компромисс стоимости: вы торгуете, используяпрофессионально управляемый хостинг-сервис Git (например, GitHub или BitBucket ) для предполагаемой экономии средств или для некоторого другого удобства (возможно, развертывания?).

Моя рекомендация, есливам неудобно следовать рекомендациям на вики / блоге, которые вы цитировали, это переходить на GitHub или Bitbucket.(Я думаю, что эти посты предлагают технически точные решения, FWIW.) Bitbucket предлагает бесплатные неограниченные частные репозитории, поэтому нет никаких реальных причин использовать Dreamhost для своего хостинга Git.

Если вам нужно какое-то решение для развертывания, чтобы идти впередс помощью хостинга вы можете создавать что-то, что требует толчков и автоматически обновляет только рабочий каталог до Dreamhost для хостинга, не неся при этом полной стоимости размещения Git-репозитория (и всей вашей истории) на Dreamhost.

3 голосов
/ 24 марта 2016

Иногда это происходит и с корпоративным 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/

1 голос
/ 06 декабря 2011

Если вы используете сервер Dreamhost для хранения пустых репозиториев, вы можете добавлять и фиксировать их локально, а затем rsync в каталоге .git до DH.После завершения перейдите в [имя хранилища] .git / config сервера и измените core.bare с false на true.

Не знаю точно, что бы вы сделали, если бы вы хотели, чтобы деревья работы на сервере, это не подходит для меня.

0 голосов
/ 24 октября 2018

Я тоже столкнулся с этой ошибкой. Решением для меня стало увеличение объема памяти на моем сервере. После этого ошибка исчезла.

0 голосов
/ 04 января 2013

У меня была эта проблема, но моя была вызвана проблемами с Capfile - capistrano был обновлен, и изменения не были отражены в capfile.

Исправлено обновление capfile до последних стандартов ...

...