Сломанная труба при нажатии на git-репозиторий

18

Я пытаюсь в первый раз нажать код для моего репозитория git, но я получаю следующую ошибку:

Counting objects: 222026, done. 
Compressing objects: 100% (208850/208850), done. 
Write failed: Broken pipe222026) 
error: pack-objects died of signal 13 
fatal: The remote end hung up unexpectedly error: failed to push some refs to 'ssh://[email protected]/<...>'

Я попытался увеличить размер буфера http ( git config http.postBuffer 524288000 ), я пытался git repack , но он не работал.

Мне удалось отправить очень похожий код в другой репозиторий (он не работал, как этот, но после git repack он действительно работал). Я пытаюсь подтолкнуть его к битбакету.

Любые идеи?

    
задан Deadlock 01.10.2013 в 17:24
источник
  • Проверьте, что stackoverflow.com/questions/18559015/... –  mu 無 02.10.2013 в 05:53
  • Я пытаюсь подтолкнуть его к битбакету, а не к github. bitbucket не имеет ограничений по размеру репо. Ну, я просто продолжал пробовать git repack и git push снова и снова, и, как и другое репо, это сработало. Но почему эта ошибка происходит, я до сих пор не знаю. –  Deadlock 02.10.2013 в 14:04
  • проблема, с которой вы сталкиваетесь, вероятно, такая же - наличие больших файлов в вашем репо. Так появилась ссылка, которая, казалось, имела объяснение и рассуждала о github. В любом случае, checkout link stackoverflow.com/questions/8672949/... который ссылается на ссылки –  mu 無 02.10.2013 в 14:14

3 ответа

14

Простым решением является увеличение размера буфера HTTP-почты, позволяющего увеличить количество блоков до удаленного репо. Для этого просто введите:

git config http.postBuffer 52428800

Число находится в байтах, поэтому в этом случае я установил его в 50 МБ. Значение по умолчанию - 1 МБ.

    
ответ дан Milan Saha 15.09.2014 в 13:08
0

Я столкнулся с той же проблемой при загрузке моих гигабайт данных в репозиторий github. Увеличение размера буфера HTTP для этого размера данных не помогло. Я не уверен, что это проблема самого git или сервера github. В любом случае я создал сценарий оболочки для решения этой проблемы, которая постепенно загружает файлы в текущий каталог, на каждом шаге менее 100 МБ данных. Он отлично работает для меня. Это занимает время, но я могу просто отключить экран и подождать ночь.

Вот сценарий оболочки: Ссылка

    
ответ дан seki 06.06.2016 в 08:30
0

Обратите внимание, что push все еще может зависнуть (даже при увеличении postBuffer), когда его файлы пакета повреждены (например, пакеты-объекты не работают)

Это будет зафиксировано в git 2.9 (июнь 2016 года)

См. commit c4b2751 , commit df85757 , commit 3e8b06d , commit c792d7b , совершить 739cf49 (19 Апр 2016) Джефф Кинг ( peff ) .
(Слияние Junio ​​C Hamano - gitster - в commit d689301 , 29 апреля 2016 года)

  

" git push " из коррумпированного репозитория, который пытается вытолкнуть большое количество refs в тупик; поток для ретрансляции уведомлений об отказе для этих обновлений ref блокируется при записи их в основной поток, после того, как основной поток на принимающей стороне замечает, что нажатие не выполнено, и решает не читать эти уведомления и возвращать сбой.

Commit 739cf49 содержит все подробности.

  

send-pack : закрыть демпферную трубу перед завершением процесса асинхронного процесса

     

Это фиксирует тупик на стороне клиента при нажатии большого количества ссылок на поврежденное репо.

    
ответ дан VonC 01.05.2016 в 22:18