1

我们正在使用 buildbot 来运行持续集成。内置的 Git 构建步骤会生成以下命令行: C:\Program Files\Git\bin\git.EXE fetch -t file:///s:/Repositories/repo +master

s:是在 buildbot slave 上映射的 debian 服务器上的 samba 共享。

它会间歇性地失败(大约 50 次构建)并出现以下错误:

error: inflate: 数据流错误(数据校验不正确)
致命:pack 在偏移量 26936 处有坏对象:inflate 返回 -3
致命:索引包失败
致命:写入错误:无效参数

有谁知道可能是什么原因造成的以及我们如何解决它?

4

1 回答 1

0

此问题的偶然性质可能会导致外部原因,例如硬件一(磁盘或内存损坏)。
例如,请参阅此线程。他们尝试了一个所有过程来正确地重新克隆坏的 repo,但那是针对旧的 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'

如果你已经有一个(无聊的)结账,你也许可以用 4、6 和 7 侥幸逃脱。

于 2010-07-22T14:01:20.363 回答