2010-07-22 4 views
1

Мы используем buildbot для непрерывной интеграции. Встроенный шаг построения Git генерирует эту командную строку: C:\Program Files\Git\bin\git.EXE fetch -t file:///s:/Repositories/repo +masterbuildbot с использованием msysGit, вызывающего прерывистую ошибку datastreram

s: является долей samba на сервере debian, отображаемом на подчиненном устройстве buildbot.

Он не может периодически (один раз в ~ 50 строит) с этой ошибкой:

 
error: inflate: data stream error (incorrect data check) 
fatal: pack has bad object at offset 26936: inflate returned -3 
fatal: index-pack failed 
fatal: write error: Invalid argument 

Кто-нибудь есть какие-либо идеи, что может быть причиной этого, и как мы можем это исправить?

ответ

0

Этот алеаторный характер этой проблемы потенциально может быть вызван внешними причинами, такими как аппаратные (повреждение диска или памяти).
См., Например, this thread. Они попробовали a all process, чтобы правильно клонировать плохое репо, но это было для старого git 1.5, поэтому он может быть не точным.
Я оставляю процесс здесь только для информации.

Apparently, the easiest way to get a correct clone is to:

1/инициализировать новый пустой репозиторий,
2/добавить 'происхождение' удаленного Thusly: git remote add -f origin http://repo.or.cz/r/msysgit.git
3 /, несмотря на ошибки, по-прежнему необходимо извлечь пакет вручную:

 
(cd .git/objects/pack/ && curl -O \ 

http://repo.or.cz/r/msysgit.git/objects/pack/pack-5b51af9cb1b1122d27ddd53d40a8c3e4472ae9e4.pack) 

4/добавление неповрежденных объектов с помощью прилагаемого комплекта:
git bundle unbundle borked.bundle.
5/Теперь получать от 'происхождения' снова (чтобы обновлять рефов правильно): git fetch origin
6/вручную (!!!) Удалите BORKED временные объектные файлы:

find .git -name \*.temp -exec rm {} \; 

7/Теперь, «Git gc '

If you already have a (borked) checkout, you might be able to get away with 4, 6 and 7.