シナリオは次のとおりです。
他のマシン(同じ作業コピー、ただし変更なし):
どうすればsvn diffでパッチ適用可能なパッチを作成したり、この場合svn diffで作成したパッチをきれいに適用したりできますか?コミットできません。 mergeinfoを保存したいと思います(明らかな回避策は、前のファイルに接続せずに、ファイルをまったく新しいものとして追加することです)。
Subversionでは、使用するdiffバイナリとそれに渡すパラメーターを指定できます。 svn diffの マニュアル を参照してください。
Svn diffから通常のパッチファイルを作成したいので、svn diffを通常のdiffのように見せたいでしょう。これを試して:
svn diff --diff-cmd /usr/bin/diff -x "-i -b" > mypatch
...
patch -p0 < mypatch
コンセプトの証明:
echo "newline" >> README.txt
svn diff --diff-cmd /usr/bin/diff -x "-i -b" > mypatch
cp README.txt README.txt.patched
svn revert README.txt
patch -p0 < mypatch
diff README.txt README.txt.patched
パッチ適用後、2つのファイルに違いはありません。
パッチ内のsvnプロパティも削除したい場合、そのためのオプションがあります:
svn diff --patch-compatible > mypatch.diff
svn help diff
言う:
--patch-compatible : generate diff suitable for generic third-party
patch tools; currently the same as
--show-copies-as-adds --ignore-properties
この方法で作成されたパッチは、古き良きプレーンpatch
ユーティリティと互換性があると想定されています。
--show-copies-as-adds
オプションは svn diff Webページに記載され、 svn options page ?.