我读了一篇关于三方合并(diff3)的文章。它给出了一个如何检测冲突的例子。例子是:
A=[1,4,5,2,3,6]
O=[1,2,3,4,5,6] <<< Origin
B=[1,2,4,5,3,6]在第一次计算O-A和O-B之后的差异时:
A=[1,4,5,2,3, ,6]
O=[1, ,2,3,4,5,6] 和
O=[1,2,3,4,5, ,6]
B=[1,2, ,4,5,3,6]在它制造diff3 parse之后
A=1,4,5,2,3 ,6 O=1,2,3,4,5 ,6 <<< B=1,,2,4,5,3 ,6
在它发现冲突之后:
1
4
5
2
<<<<<<<<<A
3
|||||||O
3
4
5
=======
4
5
3
>>>>>>B
6按照这个方法来检测冲突,我尝试了一个简单的例子:最初我有一个文档:
a;
b;我使更新用户1更新"a;","a=0;"用户2更新"b;",到"b=0;"我得到以下结果:
xx
<<<<<<< A
int a=0;
int b;
||||||| O
int a;
int b;
=======
int a;
int b=0;
>>>当我合并这两个文档时,即使我没有在同一个位置更改(a and b are not at the same position),也会有冲突!有人能解释我为什么会有这种冲突吗?
发布于 2013-05-27 14:25:10
这个问题与this one非常相似,答案也是:这是因为每个差异块不仅包含文字差异,而且还包括一些行上下文,这些行是在一个文件中定位差异所必需的,该文件中添加/删除了一些行,从而改变了主偏移量。上下文中的差异也是一个冲突,因为取决于您首先要应用哪个修补程序,您正在更改另一个修补程序的上下文。
https://stackoverflow.com/questions/16546134
复制相似问题