git archive --format=zip [new ver] `git diff --name-only [old ver] [new ver]` -o ./ver_diff.zip普段はこのコマンドで作成できるが /bin/git: Bad file number が表示され作成できない。
git diff --name-only [old ver] [new ver]差分だけを確認したところ差分の数が1000を超えていました。
git diff --name-only --diff-filter=ACMRT [old ver] [new ver]数が多かったのでフィルターをかけたところ、それでも差分の数が1000を超えていました。
試しに差分の数が少ないケースで実行してみたところアーカイブは作成できました。
作成できるケースとできないケースがあったので、一度に git archive で渡せるパスの数には
限度があると思います。
git diff で差分のファイルを抽出して、そのファイルをアーカイブ(zip や tar)が作成できれば
目的は達成できるので別の方法を探してみました。
git diff --name-only --diff-filter=ACMRT [old ver] [new ver] | xargs tar czf ./ver_diff.tar.gzgit diff で差分のファイルパスを抽出し、それを tar に渡すことで差分ファイルのみが含まれた状態のアーカイブを作成することができました。
tar コマンドは Windows では用意できなかったため、今回はCentOS5系で実行しました。
git のコマンドで完結しようと躍起になっていましたが、少し落ち着いて考えてみたらアーカイブを作成する方法は他にも色々ありますよね。