xargs:git:错误的文件号

任何人都知道什么可能导致此错误?

我正在尝试使用此命令在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来进一步调查差异.

通常,除了-s之外,通常使用xargs -n来限制参数的数量,但要小心,因为当参数的数量超过-n阈值时,这将执行多次传递给xargs的命令,而git archive不会支持附加到存档.您将不得不调用脚本,可以增加zip存档后缀的运行编号,以某种可接受的方式旋转zip文件名,或者将输出zip文件显式合并到主zip文件中.

如果您在cygwin上运行,EBADF也可能意味着底层操作系统拒绝了其中一个要归档的文件的权限.

点赞