Merge 区分、比较和合并文件-一般概念

Merge 区分、比较和合并文件-一般概念,merge,diff,Merge,Diff,考虑下面的例子,不要对语言或文件类型做任何假设。我有: M_old : [A,B,C] M_new : [A,B,X] 现在我想创建: M_result : [A,B,C,X] 基本上是新旧的结合。是否有支持此类操作的比较/差异/合并工具-可以接受旧的和新的M_,并基于上述实例生成M_结果 我已成功计算(使用简单的差异/合并工具)M_结果,当: M_old : [A,B,C] M_new : [A,B,C,X] 因为M_old中的所有元素都包含在M_new中。但我不明白,当M_old中的某

考虑下面的例子,不要对语言或文件类型做任何假设。我有:

M_old : [A,B,C]
M_new : [A,B,X]
现在我想创建:

M_result : [A,B,C,X]
基本上是新旧的结合。是否有支持此类操作的比较/差异/合并工具-可以接受旧的和新的M_,并基于上述实例生成M_结果

我已成功计算(使用简单的差异/合并工具)M_结果,当:

M_old : [A,B,C]
M_new : [A,B,C,X]
因为M_old中的所有元素都包含在M_new中。但我不明白,当M_old中的某些元素在M_new中不存在时,这是怎么可能的


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

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

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

(我想你有一个祖先:M_祖先:[A,B]) 这里的问题是,没有足够的数据来确定替换时的预期数据(合并结果应该是',C'然后',X',',X'然后',C'还是只有一个或另一个)

(我想你有一个祖先:M_祖先:[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'


即使是“聪明”的合并也无法占卜:)

也许列表示例不是最佳的。我不打算编写任何代码,但要调查“典型”差异/合并工具是否支持联合操作——在我看来,除非您创建自己的版本,否则联合并不是合并通常支持的。