20

ソース管理としてSubversionを使用するオープンソースプロジェクトにいくつかのローカル変更があります。(元のプロジェクトリポジトリへのコミットアクセス権がありません。)

私の変更はファイルを追加しますが、このファイルは「svndiff」の出力に含まれていません。(新しいファイルはプレーンテキストではなく、バイナリであることに注意してください。)

新しいファイルを含むパッチを作成するにはどうすればよいですか?


 $ svn st
   A      tests/foo.zip
 $ svn diff
 $
4

4 に答える 4

28

Pozsar と同様の動作を経験しました。そして、彼の答えは、通常の svn diff --force よりもうまく機能しました。ただし、DOS マシン (Cygwin 経由など) で実行している場合は、彼の回答を少し変更する必要があるかもしれません。次の差分 + パッチは、 --binary 引数を使用して、Cygwin でテキスト + バイナリ ファイルにパッチを適用するために機能しました。

svn diff --force --diff-cmd /usr/bin/diff -x "-au --binary" OLD-URL NEW-URL > mybinarydiff.diff

patch -p0 --binary -i mybinarydiff.diff
于 2010-02-12T23:46:35.700 に答える
12

diff コマンドには --force オプションがありますが、マシン上のバイナリに対して正しくないパッチ ファイルが生成されます。--diff-cmd オプションでそれを使用すると、私にとってはうまくいきます:

svn diff --force --diff-cmd /usr/bin/diff -x -au

これはまさにあなたが望んでいたものを生み出すと思います。

于 2009-06-26T21:42:41.553 に答える
6

あなたのファイルがバイナリであるという事実は、まさにそれが表示されない理由です。Subversionのdiffコマンドは、テキストの差分/パッチのみを実行します(Subversionは、バージョン間のバイナリファイルの違いを内部的に処理できますが)。

于 2008-10-01T22:20:27.923 に答える
0

パッチを作成している場合は、欠落しているファイルを空として扱う--new-fileオプションを指定して、プレーンな古い「diff」を使用することをお勧めします。

このオプションの構文は、使用しているプレーンな古いdiffのバージョンによって実際には異なる場合があることに注意してください。

于 2008-10-01T21:33:44.260 に答える