オリジナル:
"<tasks>"
+ " <exec command="ls">"
+ " <runif status="failed" />"
+ " </exec>"
+ " <exec command="ls">"
+ " <runif status="failed" />"
+ " </exec>"
+ "</tasks>";
MODIFICATION_1:
"<tasks>"
+ " <exec command="ls">"
+ " <runif status="failed" />"
+ " </exec>"
+ "</tasks>";
変更_2:
"<tasks>"
+ " <exec command="ls">"
+ " <runif status="passed" />"
+ " </exec>"
+ " <exec command="ls">"
+ " <runif status="failed" />"
+ " </exec>"
+ "</tasks>";
結果:
"<tasks>"
+ " <exec command="ls">"
+ " <runif status="passed" />"
+ " </exec>"
+ "</tasks>";
期待される結果:
"<tasks>"
+ " <exec command="ls">"
+ " <runif status="failed" />"
+ " </exec>"
+ "</tasks>";
ファイルの元のコンテンツはORIGINALです。
誰かがこの時点で枝を切り取り、ORIGINALをMODIFICATION_2に編集しました。(最初の<exec>
ノードを からfailed
に変更passed
)
master
誰かがORIGINALをMODIFICATION_1に変更しました。(最初の<exec>
ノードの削除)
ブランチを master にマージすると、 EXPECTED_RESULTが生成されたり、マージの競合が発生したりする代わりに、変更はRESULT<exec>
のようになります (ブランチの変更は、削除された最初のノードではなく2 番目のノードに適用されます!)。
これは予想される動作ですか?誰かが理由を説明できますか?