我无法克隆FFmpeg回购。用一个 binary search algorithm, 我想我在一个特定的深度范围内缩小了这个问题。注意结果不一致
$ git clone --depth 916 git://source.ffmpeg.org/ffmpeg Cloning into 'ffmpeg'... remote: Counting objects: 16737, done. remote: Compressing objects: 100% (8454/8454), done. remote: Total 16737 (delta 11293), reused 11481 (delta 8105) Receiving objects: 100% (16737/16737), 11.32 MiB | 398.00 KiB/s, done. Resolving deltas: 100% (11293/11293), done.
$ git clone --depth 916 git://source.ffmpeg.org/ffmpeg Cloning into 'ffmpeg'... remote: Counting objects: 16737, done. remote: Compressing objects: 100% (8454/8454), done. remote: Total 16737 (delta 11291), reused 11482 (delta 8105) Receiving objects: 100% (16737/16737), 11.32 MiB | 390.00 KiB/s, done. fatal: pack is corrupted (SHA1 mismatch) fatal: index-pack failed
$ git clone --depth 916 git://source.ffmpeg.org/ffmpeg Cloning into 'ffmpeg'... remote: Counting objects: 16737, done. remote: Compressing objects: 100% (8454/8454), done. remote: Total 16737 (delta 11290), reused 11481 (delta 8105) Receiving objects: 100% (16737/16737), 11.32 MiB | 401.00 KiB/s, done. Resolving deltas: 100% (11290/11290), done. fatal: missing blob object 'e893922133e1837d51077b07b6eb2ef3d5f269ec' fatal: remote did not send all necessary objects
$ git clone --depth 916 git://source.ffmpeg.org/ffmpeg Cloning into 'ffmpeg'... remote: Counting objects: 16737, done. remote: Compressing objects: 100% (8454/8454), done. remote: Total 16737 (delta 11292), reused 11481 (delta 8105) Receiving objects: 100% (16737/16737), 11.32 MiB | 394.00 KiB/s, done. Resolving deltas: 100% (11292/11292), done. Checking out files: 100% (3637/3637), done.
如何解决此问题,以便我可以在此深度克隆?
$ git --version git version 1.8.3.1
答案 0 :(得分:2)
在这种情况下,问题是由使用引起的 最新的Cygwin(1.7.21) 最新的Git来自Cygwin Ports(1.8.3.1)。
解决方法是使用 Adam Dinwoodie’s build
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
答案 1 :(得分:1)
这几个月一直让我烦恼,我刚刚找到了一个似乎对我有用的解决方法。
我注意到每次我从Cygwin下的源代码编译git并试图查看一个大的repo(带有1GB子模块的~1GB repo)时,我会在这个错误的几乎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和symlinked cygcrypto-1.0.0.dll备份到0.9.8。我现在已经成功连续3次成功检出了repo和子模块(相比之前的100%失败率)。我不能保证这可以100%解决问题,但看起来非常有希望。
我假设您使用Git,那么您可能已经知道将新DLL版本符号链接到旧版本可能存在的问题。使用风险自负。
(如果有人回答如何让我的git构建直接链接到0.9.8,那么我不需要对DLL进行符号链接。我只使用cygwin for Git并且不太了解构建系统知道如何链接旧版本)