2013-05-14 3 views
5

3方向マージ(diff3)に関する記事を読んだ。衝突の検出方法の例を示します。例がある:それはOA間OB後の差分を算出する第一の時間でgitで奇妙な競合が発生する

A=[1,4,5,2,3,6] 
O=[1,2,3,4,5,6] <<< Origin 
B=[1,2,4,5,3,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] <<< Origin 
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;" ULT:

xx 
<<<<<<< A 
int a=0; 
int b; 
||||||| O 
int a; 
int b; 
======= 
int a; 
int b=0; 
>>> 

私は、これら2つの文書をマージすると私は同じ位置(a and b are not at the same position)で変更しない場合でも、競合を持っています!なぜ私はこの紛争を持っているのですか?

+0

aのエントリはありますか。 b;同じ行の文書にある? – Schleis

+0

いいえ、同じ行にありません! – Mehdi

+0

文書全体が3行だけであれば、おそらくdiffが適切な矛盾を認識するのに十分なコンテキストではないでしょう。 diffが混乱すると、それは矛盾です;) –

答えて

1

この質問は、this oneとよく似ています。答えはまた、次のとおりです。各差分ハンクは、リテラル差だけでなく、いくつかの文脈から構成されているためです。いくつかの行が追加/削除され、したがってハンクオフセットが変化します。最初に適用するパッチによっては、他のパッチのコンテキストを変更しているため、コンテキストの違いも矛盾です。

関連する問題