2010-10-14 63 views
2

假設文件MINE和YOURS是OLD的後代。GNU diff3(三路合併)給出了意想不到的結果

FILE_MINE =

 
abc 
def 
ghi 

FILE_OLD =

 
abc 
jkl 
ghi 

FILE_YOURS =

 
abc 
def 
ghi 

命令diff3 -m MIND OLD YOURS給出:

 
abc 
<<<<<<< OLD 
jkl 
======= 
def 
>>>>>>> YOURS 
ghi 

diff3無法解決MINE和YOURS作出相同更改。

爲什麼?而且,有沒有辦法解決這個問題?

胳肢你的大腦與此:

diff OLD MINDdiff OLD YOURS在它們的輸出相同的帥哥。

 
2c2 
< jkl 
--- 
> def 

在三方合併期間,這些hunk是不是應該「取消」?

回答

2

你期望有什麼?

正如article describing diff3 utility說:

...這(合併)失敗是真實的當三個輸入文件不同或當只有年長不同;我們稱之爲衝突。當所有三個輸入文件不同,我們稱之爲重疊

因此,你所描述的情況被視爲衝突的矛盾。 '爲什麼這樣?'你可能會問。由於diff3算法。說明你可以找到在同一頁:

你可以認爲這(合併)爲減去年長和結果加到,或相互融合成礦區更改之後,轉變成你的

它不能正確地解決差異,因爲它沒有一個適當的變化上下文。

我同意你的看法,如果你打算說它應該使用其他方法。但是它就是這樣啊。 diff3並不完美,如果你想按照article

相關問題