1

我无法克隆 FFmpeg 存储库。使用 二分搜索算法,我认为我将问题缩小到特定深度。注意不一致的结果

$ git clone --depth 916 git://source.ffmpeg.org/ffmpeg
克隆到“ffmpeg”...
远程:计数对象:16737,完成。
远程:压缩对象:100% (8454/8454),完成。
远程:总计 16737(增量 11293),重复使用 11481(增量 8105)
接收对象:100% (16737/16737), 11.32 MiB | 398.00 KiB/s,完成。
解决增量:100% (11293/11293),完成。
$ git clone --depth 916 git://source.ffmpeg.org/ffmpeg
克隆到“ffmpeg”...
远程:计数对象:16737,完成。
远程:压缩对象:100% (8454/8454),完成。
远程:总计 16737(增量 11291),重复使用 11482(增量 8105)
接收对象:100% (16737/16737), 11.32 MiB | 390.00 KiB/s,完成。
致命:包已损坏(SHA1 不匹配)
致命:索引包失败
$ git clone --depth 916 git://source.ffmpeg.org/ffmpeg
克隆到“ffmpeg”...
远程:计数对象:16737,完成。
远程:压缩对象:100% (8454/8454),完成。
远程:总计 16737(增量 11290),重复使用 11481(增量 8105)
接收对象:100% (16737/16737), 11.32 MiB | 401.00 KiB/s,完成。
解决增量:100% (11290/11290),完成。
致命:缺少 blob 对象“e893922133e1837d51077b07b6eb2ef3d5f269ec”
致命:远程没有发送所有必要的对象
$ git clone --depth 916 git://source.ffmpeg.org/ffmpeg
克隆到“ffmpeg”...
远程:计数对象:16737,完成。
远程:压缩对象:100% (8454/8454),完成。
远程:总计 16737(增量 11292),重复使用 11481(增量 8105)
接收对象:100% (16737/16737), 11.32 MiB | 394.00 KiB/s,完成。
解决增量:100% (11292/11292),完成。
检出文件:100% (3637/3637),完成。

我该如何解决这个问题,以便我可以在这个和完整的深度进行克隆?

$ git --版本
git 版本 1.8.3.1
4

2 回答 2

2

在这种情况下,问题是由于使用最新的 Cygwin (1.7.21) 和 Cygwin Ports (1.8.3.1) 的最新 Git 引起的。

解决方法是使用 Adam Dinwoodie 的构建

wget tastycake.net/~adam/cygwin/x86/git/git-1.8.5.2-1.tar.xz
tar -x -C / -f git-1.8.5.2-1.tar.xz
于 2013-07-21T06:53:57.370 回答
1

几个月来这一直困扰着我,我刚刚找到了一个似乎对我有用的解决方法。

我注意到每次我在 Cygwin 下从源代码编译 git 并尝试检查一个大型 repo(约 1GB repo 和额外的 1GB 子模块)时,我几乎 100% 的时间都会因为这个错误而失败。但是,如果我使用 Cygwin 的 setup.exe 中的预编译 git,它总是有效的。即使我自己编译了相同的版本(1.7.9),我的编译也会失败并且他们的编译工作。我在两个 .exe 文件上都使用了 objdump,唯一显着的区别是我的 .exe 使用了 cygcrypto-1.0.0.dll,而他们使用了 cygcrypto-0.9.8.dll。

所以,我备份了 cygcrypto-1.0.0.dll 并将 cygcrypto-1.0.0.dll 符号链接到 0.9.8。我现在已经连续 3 次成功地检查了 repo 和子模块(与以前接近 100% 的失败率相比)。我不能保证这能 100% 解决问题,但它看起来非常有希望。

我假设如果您使用 Git,那么您可能对将新 DLL 版本符号链接到旧版本可能存在的问题有所了解。使用风险自负。

(如果有人回复如何让我的 git build 直接链接到 0.9.8,那么我不必对 DLL 进行符号链接。我只将 cygwin 用于 Git,并且对构建系统不太了解,不知道如何链接到旧版本)

于 2014-01-10T16:36:28.340 回答