3 ms·
I thought the three way merge tool was independent of the source control system. I'm pretty sure that's true for the four systems I've used: hg, tfs, perforce,
by SteveJS 14y ago
I thought the three way merge tool was independent of the source control system. I'm pretty sure that's true for the four systems I've used: hg, tfs, perforce, and the horrible horrible SLM. I can say however that SLM's default three way merge just seemed to always do the right thing.
Tools for managing real conflicts seem more interesting. Most conflict resolution tools seem to 'help' in a way that leaves me completely baffled. They automate the creation of unintentional edits rather than helping you understand the history of the changes that lead to the conflict, and tracking and reversibility of what you are doing during merge.
I've resorted to temporarily overlaying another source control system to track dealing with resolving large complicated merge conflicts.
- sirclueless 14y agoInasmuch 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.