我試圖替換我的svn合併工作流程 - 通常是svn diff
,有時是一些手動編輯修補程序,然後patch
- 與實際svn merge
。但是我看到了一些意想不到的行爲,並且我無法在任何SVN文檔中找到任何解釋。這裏是我的情況:(REV 0)爲什麼svn合併--ignore-ancestry在這種情況下工作了兩次,當svn diff + patch的時候呢?
- 新庫
- 創建了一個名爲樹幹
file
(REV 1) - 複製樹幹到樹枝/ BRANCH1的一個空白文件
- (REV 2)。在分支機構/ BRANCH1,改變
file
讀 「ABCDEFG」,並承諾 - 早在軀幹,跑了(轉3):
svn merge -c3 ^/branches/branch1 . --ignore-ancestry
到目前爲止,這麼好。在trunk中的file
包含「abcdefg」。因爲我使用了--ignore-ancestry,所以trunk沒有更新任何mergeinfo。爲了驗證,我跑:
svn pg svn:mergeinfo .
打印出什麼。大。所以現在我想再次應用r3 中的更改。所以,我跑:
svn merge -c3 ^/branches/branch1 . --ignore-ancestry
此命令執行什麼。打印出沒有輸出,不會更改file
,並且不會添加任何合併信息。如果我做同樣的事情與我的老DIFF和補丁的工作流程,如:
svn diff -c3 ^/branches/branch1 | patch
然後文件與變化再次更新。而且,由於改變總額僅有:
--- file (revision 2)
+++ file (revision 3)
@@ -0,0 +1 @@
+abcdefg
再次應用,它只是使file
包含「ABCDEFG」兩行,按預期。
~~~
我知道這不應該是一個共同的工作流程,但我覺得我需要了解svn merge
實際上是在做這樣的情況之前,我可以輕鬆地採用它。 (不需要支持svn merge
的好處 - 我已經登機了。)
謝謝!
我想也許這與diff3和diff之間的差異有關,但即使使用diff3,我也無法得到與使用svn merge相同的結果。是什麼賦予了? – mhjacobson 2012-03-20 09:41:38