Попробуйте это сработало для меня. Добавьте эту зависимость в ваш файл build.gradle
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
Ваше решение имеет локальную и удаленную рабочую копию, но снова вызовет проблемы, когда удаленный репозиторий решает снова переупаковать. К счастью, вы можете установить параметры конфигурации, которые уменьшат объем памяти, необходимый для переупаковки в обоих хранилищах, - это по сути делает параметры командной строки, которые вы добавили в параметры по умолчанию при переупаковке. Итак, вы должны войти в систему на удаленном компьютере, внести изменения в репозиторий и выполнить:
git config pack.windowMemory 10m
git config pack.packSizeLimit 20m
Возможно, вы захотите сделать то же самое в своем локальном репозитории. (Кстати, я полагаю, что ваш репозиторий очень большой или это машины с небольшой памятью - эти значения для меня очень низкие).
Для чего это стоит, когда при сбоях malloc при переупаковке очень больших репозиториев в прошлом, я также изменил значения core.packedgitwindowsize
, core.packedgitlimit
, core.deltacachesize
, pack.deltacachesize
, pack.window
и pack.threads
, но это звучит так, как будто вы не нужны другие варианты:)
У меня была такая же проблема на ubuntu 14.10 с git 2.1.0 в частном репозитории github.com. (Предполагается, что маршрутизатор Entreprise работает в разных сетях Wi-Fi, за исключением рабочего места).
* GnuTLS recv error (-54): Error in the pull function.
* Closing connection 2jects: 31% (183/589)
error: RPC failed; result=56, HTTP code = 200
fatal: The remote end hung up unexpectedly
fatal: protocol error: bad pack header
Мое решение заключалось в том, что git clone с использованием ssh (я заранее установил ssh-ключи):
git clone https://github.com/USERNAME/REPOSITORYNAME.git
blockquote>становится:
git clone git@github.com: USERNAME / REPOSITORYNAME.git
blockquote>*: (Генерация ключа ssh)
ssh-keygen -t rsa -C "your_email_address_registered_with_github@domain.com"
blockquote>Затем войдите в github, в настройках, импортируйте ssh-ключи и импортируйте его из ~ / .ssh / id_rsa.pub.
Я решил проблему, выполнив следующие шаги.
git repack -a -d --window-memory 10m --max-pack-size 20m
git init --bare
Я использую git версии 1.7.0.4, и он принимает эту команду. Возможно, git версии 1.6 не принимает эту команду.
Попробуйте создать новый репозиторий с некоторыми случайными коммитами. Затем переустановите его с помощью этой команды.
git repack -a -d --window-memory 10m --max-pack-size 100m
– Flimm
4 October 2016 в 12:28
Не имея прямого доступа к репозиторию и, следовательно, неспособного выполнить переупаковку, выполнение мелкого клона, а затем постепенное извлечение, а увеличение глубины помогло мне.
git clone YOUR_REPO --depth=1
git fetch --depth=10
...
git fetch --depth=100
git fetch --unshallow //Downloads all history allowing to push from repo
Надеюсь, что он все равно может помочь кому-то.
git clone REPO --depth=1
все еще не удалось для меня с ошибкой remote: aborting due to possible repository corruption on the remote side.
– Flimm
4 October 2016 в 13:12
Это не отвечает на вопрос, но кто-то может столкнуться с этим: переполнение может также завершиться неудачей на сервере, когда pack-objects
завершается каким-то убийством памяти (например, используемым на Dreamhost):
$ git clone project-url project-folder
Cloning into project-folder...
remote: Counting objects: 6606, done.
remote: Compressing objects: 100% (2903/2903), done.
error: pack-objects died of signal 9284.51 MiB | 2.15 MiB/s
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: early EOF
fatal: index-pack failed
В Dreamhost это, по-видимому, вызвано mmap
. Код repack использует mmap
для сопоставления содержимого некоторых файлов в память, а поскольку убийца памяти недостаточно умен, он учитывает mmapped-файлы как используемую память, убивая процесс Git, когда он пытается mmap
создать большой файл.
Решение состоит в том, чтобы скомпилировать пользовательский двоичный файл Git с отключенной поддержкой mmap
(configure NO_MMAP=1
).