3

У меня ОЧЕНЬ странная и не очень освещенная проблема с конкретным Windows Build Server (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

Я пытался найти некоторые сообщения об этом в Интернете, но ничего не вышло ...

Вещи, которые я уже пробовал:

  1. Удалите git и установите снова
  2. Удалить рабочую область (которая также удаляется заданием при выборе варианта удаления)
  3. Удалить ВСЕ рабочее пространство из системы
  4. git fsck - нет интересных результатов
  5. git verify-pack - нет интересных результатов
  6. git index-pack + соответствующий файл пакета - здесь тоже нет интересных результатов

Еще немного (надеюсь, важная) информация:

  1. С этого сервера, когда я работаю через CMD / GitBash - та же проблема сохраняется
  2. С других серверов / ПК я могу выполнить эту команду с тем же Git Repo, что доставляет мне неприятности ...
  3. Другие задачи, которые работают с другими Git Repo на одном и том же сервере сборки, работают свободно.

Я потерян. Может кто-то пролить свет на это?

2 ответа2

2

Основная причина всего этого беспорядка для меня до сих пор неизвестна.

Но теперь мне удалось преодолеть это так:

В задании Jenkins в конфигурации Git SCM были включены следующие лаги:

  1. Протрите рабочее пространство перед сборкой
  2. Используйте неглубокий клон

Удаление 2 из них решило проблему.

После этого их можно вернуть обратно, и это все равно будет работать.

WEIRD !!!

1

Причина, по которой у меня возникла эта проблема, заключалась в том, что git clone был сделан «мелким», поэтому у него не было полной истории коммитов (следовательно, fetch не мог видеть полную историю для вычисления дельт).

Проверьте журнал Git в рабочем дереве, в которое вы пытаетесь выбрать, у него не должно быть полной истории - у меня было только несколько коммитов, в списке из которых самый старый в списке говорил, что он добавляет «новый файл» для всех файлы в репо - раздавленный, я думаю.

Убедитесь, что переменная GIT_DEPTH не установлена, затем

git pull --unshallow

или же

git pull 

и попробуйте получить снова.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .