4

有谁知道什么可能导致这个错误?

我正在尝试使用以下命令在 git 上创建一个包:

git diff -z --name-only --diff-filter=MAR 5e2a4b4 5261fe1 | xargs -s1000000 -0 git archive develop -o 'package.zip'
4

1 回答 1

2

除了您已经排除的 ssh 错误之外,还可能是 git archive 可以在命令行上处理有限数量的参数。

您已经(可疑地)限制了参数的总运行长度-s,并且您表示您的命令适用于某些提交,但不适用于其他提交。您可以通过设置进一步调查差异GIT_TRACE=1

通常,通常会限制参数的数量,xargs -n但要注意,当参数数量超过阈值-s时,这将多次执行传递给 xargs 的命令,并且不支持附加到存档。您将不得不调用一个脚本,该脚本可以增加 zip 存档后缀的运行编号,以某种可接受的方式旋转 zip 文件名,或将输出 zip 文件显式合并到主 zip 文件中。-ngit archive

而且,如果您在 cygwin 上运行,EBADF也可能意味着底层操作系统拒绝了对要归档的文件之一的权限。

于 2013-12-30T08:28:18.990 回答