2 ms·
Inasmuch as a merge is a 3-way comparison between a common parent and two branches, it is basically DVCS-agnostic. The really interesting thing here is that Dar
by sirclueless 14y ago
Inasmuch as a merge is a 3-way comparison between a common parent and two branches, it is basically DVCS-agnostic. The really interesting thing here is that Darcs doesn't just do three-way merges: it actually tracks every change along the way. From what I understand, Darcs conceptually resolves conflicts as if you rewound one branch and played it on top of the other, and vice versa simultaneously. A conflict is considered resolved if these operations are commutative, that is, the order of commits doesn't affect the result. Manual intervention is required when this fails to be true. This is inherently more powerful than a three-way merge, because you have the entire history of each divergent branch to help you understand changes, instead of only the net effect of each.