При попытке клонировать существующий Git репозиторий с сервера, я получил вот такое сообщение:
remote: Compressing objects: 7% (88/1255) remote: fatal: unable to create thread: Resource temporarily unavailable remote: aborting due to possible repository corruption on the remote side. fatal: index-pack failed
Поиски в интернете подсказали причину и пути решения. Одна из возможных причин ошибки - это нехватка оперативной памяти для git, причем это не значит что памяти не хватает физически. Git сам ограничивает для себя оперативную память, которую может использовать, вот какие настройки рекомендуют сделать:
git config --global pack.windowMemory "100m"
git config --global pack.packSizeLimit "100m"
git config --global pack.threads "1" и/или git config --global pack.window "0"
Однако, это не помогло в моем случае, т.к.доступа к настройкам Git у меня не было. Для решения проблемы нужно было выкачать хранилище небольшими порциями. Для этого изначально, репозиторий был создан с ключем depth 1:
git clone --depth 1 ...
Чтобы докачать в репозиторий недостающую историю для Git версии больше 1.8.3. существует команда:
git fetch --unshallow
Но в данном случае она не помогла, т.к. выдавала аналогичную ошибку на стороне сервера.
Чтобы скачать историю изменений репозитория полностью, несколько раз была выполнена команда fetch с параметром --depth
git fetch --depth 1 git fetch --depth 2 git fetch --depth 3
И так до тех пор, пока в ответ не будет получено:
remote: Total 0 (delta 0), reused 0 (delta 0)
Это значит, что репозиторий успешно скачан, и с ним можно работать.
UPD: в следующий раз, когда столкнулся с этой проблемой, указанный способ решения уже не подошел, пришлось решать вопрос с добавлением следующих строк в настройки.
git config --global pack.windowMemory "100m"
git config --global pack.SizeLimit "100m"
git config --global pack.threads "1"
Получается, только это можно считать полноценным решением.