2011-05-12 66 views
0

考慮下面的例子,不需要任何有關語言或文件類型的假設。我有:差異,比較和合並文件 - 一般概念

M_old : [A,B,C] 
M_new : [A,B,X] 

,現在我想創建:

M_result : [A,B,C,X] 

這基本上是M_OLD和M_new的結合。是否有支持這種操作的比較/差異/合併工具 - 可以使用M_old和M_new並基於上述實例生成M_result?

M_old : [A,B,C] 
M_new : [A,B,C,X] 
因爲M_OLD所有元素

包含在M_new:

時,我曾與計算成功(使用簡單的差異/合併工具)M_result。但是當M_old中的某些元素不存在於M_new中時,我不明白這是可能的。

所以在更一般的術語中,「合併」操作僅支持如上所述的特殊條件下的聯合?

回答

0

如果你不關心結果列表中的準確順序,您可以通過附加的每一個元素在M_old計算​​3210,是不是在M_newM_new,或者,通過連接M_newM_old,然後刪除重複元素(如果兩個輸入列表都沒有包含任何重複的元素,這些元素會產生完全相同的結果)。

+0

也許這個列表示例並不是最優的。我不打算編寫任何代碼,但要調查聯合操作是否受「典型」差異/合併工具支持 - 對我來說,聯盟並非通常所支持的合併,除非您創建自己的版本。 – u123 2011-05-12 20:03:06

0

正確的合併工具將向您提出您希望在其他解決方案中使用的解決方案,這就是我們的ECMerge工具。 (我假設你有一個祖先:M_ancestor:[A,B]) 這裏你的問題是,沒有足夠的數據來確定當有替換時期望的數據(如果合併結果爲',C '然後',X',',X'然後',C'或只有一個或另一個)。另一種情況是當變化是插入',X'(M_old:[A,B,C]與M_new:M_new: [A,B,C,X])通常通過添加',X'來解決,因爲沒有特別的選擇。如果祖先是[A,B],那麼還有一個問題:合併時應考慮添加',C'還是',C,X'?這是不明顯的,因爲只有'C'的版本可能已經考慮到SCC系統外的',C,X'的知識並且已經刪除了',X'。

即使'聰明'合併也不能做占卜:)