64

シナリオは次のとおりです。

  1. svn cp または mv 一部のファイル
  2. そのファイルを変更する
  3. svn diff > マイパッチ

他のマシン (同じ作業コピー、ただし変更なし):

  1. mypatch を適用してみてください。
  2. 失敗 -> 存在しないファイルを変更しようとします。

この場合、svn diff にパッチ適用可能なパッチを生成させる、または svn diff によって生成されたパッチをきれいに適用するにはどうすればよいですか? コミットできません。私はmergeinfoを保持したいと思います(明らかな回避策は、以前のファイルに接続せずに、ファイルを完全に新しいものとして追加することであるため)。

4

4 に答える 4

64

Subversion を使用すると、使用する差分バイナリとそれに渡すパラメータを指定できます。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 つのファイルに違いはありません。

于 2008-11-26T05:41:33.483 に答える
5

svn diff Web ページに記載され、svn オプション--show-copies-as-addsページで説明されているオプションを試しましたか?

于 2013-03-20T20:17:53.907 に答える