私は自分のワークフロー(通常はsvn diff
、時には手作業によるパッチの編集)をマージしてから、patch
を実際のsvn merge
と置き換えようとしています。しかし、私は予期しない動作を見ているし、私はSVNのドキュメントのいずれかの説明をオンラインで見つけることができません。 svn diff + patchはなぜこのシナリオでsvn merge --ignore-ancestryが2回動作しないのですか?
- 新しいリポジトリ/支社(REV 1。)支店へ
- コピーされたトランクトランク内
file
と呼ばれる空のファイルに作成 - (0 REV。):ここに私のシナリオです(REVを2。) (REV 3)バックトランクに支店/支社では、 "ABCDEFG" とコミットを読むために
file
を変更 - 、走っ:
を210
これまでのところ、とても良いです。トランク内のfile
には「abcdefg」が含まれています。私は--ignore-ancestryを使っていたので、trunkはmergeinfoで更新されませんでした。確認するには、私が実行します。何も出力しない
svn pg svn:mergeinfo .
を。すばらしいです。今度はr3の変更をにもう一度に適用したいと思います。だから私は実行します。
svn merge -c3 ^/branches/branch1 . --ignore-ancestry
このコマンドは何もしません。出力を出力せず、file
を変更せず、mergeinfoも追加しません。私はこのように、私の古い差分-とパッチのワークフローと同じことを行う場合は、次の
svn diff -c3 ^/branches/branch1 | patch
次に、ファイルを再び変更で更新されます。変更はちょうどに達したので:それを再度適用
--- file (revision 2)
+++ file (revision 3)
@@ -0,0 +1 @@
+abcdefg
だけで意図したとおりにfile
は、「ABCDEFG」の2つの行が含まれています。
~~~
私は、これは一般的なワークフローではありません知っているが、私は快適にそれを採用することができます前に、svn merge
は、実際にこのような状況でやっていることを理解する必要があるような気がします。 (私はすでにsvn merge
の利益を宣言する必要はありません - 私はすでに乗っています)
ありがとう!
私はこれがdiff3とdiffの違いと関係していると思っていましたが、diff3を使っても、私はsvn mergeを使って得た結果と同じ結果に終わることはできません。何がありますか? – mhjacobson