我们正在使用buildbot来运行持续集成。内置的Git构建步骤生成以下命令行:
C:\Program Files\Git\bin\git.EXE fetch -t file:///s:/Repositories/repo +master
s:是映射在buildbot slave上的debian服务器上的samba共享。
它会间歇性地失败(一次在~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 :(得分:0)
此问题的随意性可能会导致外部原因,例如硬件(磁盘或内存损坏)
例如,请参阅this thread。他们尝试a all process正确地重新克隆坏回购,但那是旧的git 1.5,所以它可能不再准确。
我将这个过程留在这里只是为了获取信息。
显然,获得正确克隆的最简单方法是:
1 /初始化一个新的空存储库,
2 /这样添加'origin'远程: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 /现在再次从'origin'获取(正确更新refs):git fetch origin
6 /手动(!!!)删除borked临时目标文件:
find .git -name \*.temp -exec rm {} \;
7 /现在,'git gc'
如果您已经有一个(borked)结账,那么您可以通过4,6和7来逃避。