このエラーの原因を知っている人はいますか?
次のコマンドを使用して、git でパッケージを作成しようとしています。
git diff -z --name-only --diff-filter=MAR 5e2a4b4 5261fe1 | xargs -s1000000 -0 git archive develop -o 'package.zip'
すでに除外したsshでエラーが発生することは別として、gitアーカイブがコマンドラインで限られた数の引数を処理できる可能性もあります。
すでに(疑わしいことに)引数の合計実行長を で制限しており-s
、コマンドが一部のコミットでは機能しているが、他のコミットでは機能していないことを示しました。を設定することで、違いをさらに調べることができますGIT_TRACE=1
。
一般にxargs -n
、additional を使用して引数の数を制限するのが一般的ですが、引数の数がしきい値-s
を超えると xargs に渡されたコマンドが複数回実行され、アーカイブへの追加がサポートされないため注意してください。代わりにスクリプトを呼び出す必要があります。これにより、zip アーカイブ サフィックスの実行中の番号をインクリメントしたり、許容される方法で zip ファイル名をローテーションしたり、出力 zip ファイルをマスター zip ファイルに明示的にマージしたりできます。-n
git archive
また、cygwin で実行している場合は、EBADF
アーカイブするファイルの 1 つに対するアクセス許可が、基盤となる OS によって拒否されたことを意味する場合もあります。