有谁知道什么可能导致这个错误?
我正在尝试使用以下命令在 git 上创建一个包:
git diff -z --name-only --diff-filter=MAR 5e2a4b4 5261fe1 | xargs -s1000000 -0 git archive develop -o 'package.zip'
除了您已经排除的 ssh 错误之外,还可能是 git archive 可以在命令行上处理有限数量的参数。
您已经(可疑地)限制了参数的总运行长度-s
,并且您表示您的命令适用于某些提交,但不适用于其他提交。您可以通过设置进一步调查差异GIT_TRACE=1
。
通常,通常会限制参数的数量,xargs -n
但要注意,当参数数量超过阈值-s
时,这将多次执行传递给 xargs 的命令,并且不支持附加到存档。您将不得不调用一个脚本,该脚本可以增加 zip 存档后缀的运行编号,以某种可接受的方式旋转 zip 文件名,或将输出 zip 文件显式合并到主 zip 文件中。-n
git archive
而且,如果您在 cygwin 上运行,EBADF
也可能意味着底层操作系统拒绝了对要归档的文件之一的权限。