git fatal: пакет содержит 1 неразрешенную дельту (сбой индекса)
У меня ОЧЕНЬ странная и не очень освещенная проблема с конкретным сервером сборки Windows (Jenkins Slave).
В Jenkins у меня есть Job, который извлекает последний код из определенной ветки.
Фактическая команда, которую пытается выполнить git:
git fetch -t origin +refs/heads/*:refs/remotes/origin/*
Через несколько часов, после хорошей работы в течение 1 месяца, работа неожиданно завершается с этой ошибкой:
ERROR: Problem fetching from origin / origin - could be unavailable. Continuing anyway
hudson.plugins.git.GitException: Command "C:\Program Files (x86)\Git\bin\git.exe fetch -t origin +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout:
stderr: fatal: pack has 1 unresolved delta
fatal: index-pack failed
Я пытался найти некоторые посты об этом в Интернете, но ничего не вышло...
Вещи, которые я уже пробовал:
- Удалите git и установите снова
- Удалить рабочую область (которая также удаляется заданием при выборе варианта удаления)
- Удалить ВСЕ рабочее пространство из системы
- git fsck - нет интересных результатов
- git verify-pack - нет интересных результатов
- git index-pack + соответствующий файл пакета - здесь тоже нет интересных результатов
Еще немного (надеюсь, важная) информация:
- С этого сервера, когда я работаю через CMD / GitBash - та же проблема сохраняется
- С других серверов / ПК я могу выполнить эту команду с тем же Git Repo, что доставляет мне неприятности...
- Другие задачи, которые работают с другими Git Repo на одном и том же сервере сборки, работают свободно.
Я потерян. Может кто-то пролить свет на это?
3 ответа
Коренная причина всего этого беспорядка мне пока неизвестна.
Но теперь мне удалось преодолеть это так:
В задании Jenkins в конфигурации Git SCM были включены следующие лаги:
- Протрите рабочее пространство перед сборкой
- Используйте неглубокий клон
Удаление 2 из них решило проблему.
После этого их можно вернуть обратно, и это все равно будет работать.
WEIRD!!!
Причиной, по которой у меня возникла эта проблема, была git clone
была сделана "мелкой", следовательно, она не имела полной истории коммитов (следовательно, fetch не мог видеть полную историю для вычисления дельт).
Проверьте журнал Git в рабочем дереве, в которое вы пытаетесь выбрать, у него не должно быть полной истории - у меня было только несколько коммитов в списке, самый старый из которых говорил, что он добавляет "новый файл" для всех файлы в репо - раздавленный, я думаю.
Убедитесь, что нет GIT_DEPTH
переменная установлена, то
git pull --unshallow
или же
git pull
и попробуйте получить снова.
Я столкнулся с той же проблемой. Сначала я создал новую ветку master и проверил, нормально ли работает развертывание из этой ветки, и так оно и было. Поэтому я попытался удалить рабочую область для основной ветки (сделал это вручную), и это исправило мой случай.