差异,比较和合并文件 - 一般概念

时间:2011-05-12 19:28:26

标签: merge diff

考虑以下示例,不考虑语言或文件类型。我有:

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_result时取得了成功:

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

因为M_old中的所有元素都包含在M_new中。但是,当M_old中的某些元素不存在于M_new中时,我看不出这是怎么回事。

因此,在更一般的术语中,“合并”操作是否仅支持如上所述的特殊条件下的联合?

2 个答案:

答案 0 :(得分:0)

如果您不关心结果列表的确切顺序,可以通过将M_result中不在M_old中的每个元素附加到M_new来计算M_new或者,通过连接M_newM_old然后删除重复元素(如果输入列表中没有任何重复元素,则这些元素会产生完全相同的结果)。

答案 1 :(得分:0)

正确的合并工具会为您提供其他解决方案所需的解决方案,这就是我们的ECMerge工具。

(我认为你有一个祖先:M_ancestor:[A,B]) 这里你的问题是没有足够的数据来确定当有替换时(合并结果是',C'然后',X',',X'然后','C'或只有一个或者其他)。

(我认为你有一个祖先:M_ancestor:[A,B,C]) 另一种情况是,更改是插入',X'(M_old:[A,B,C]与M_new:[A,B,C,X])通常通过添加',X'来解决,因为没有特别的选择。如果祖先是[A,B],那么仍有一个问题:合并是否应该考虑添加',C'或',C,X'?这一点并不明显,因为只有',C'的版本可能已经考虑了来自SCC系统外部的',C,X'的知识,并且已经删除了',X'。

甚至'聪明'的合并都不能占卜:)