Merge tool should offer "manual resolve"
Created originally on Bitbucket by abudden
When merging branches in TortoiseHG, there are almost always three possibilities for how I want to do the merge:
-
Automatic - I know that the changes in the two branches are completely separate and I expect that one tool or other will be able to do the merge correctly.
-
Manual - I either don't know how the changes relate or I know there are likely to be conflicts and I want to start up Beyond Compare and go through the conflicts manually.
-
Pick one - I know the changes in one branch are irrelevant or it's a auto-incrementing build number file or something like that and I just use "Take Local" or "Take Other".
The "Take Local" and "Take Other" options are great, but the other options are "Mercurial Resolve" and "Tool Resolve". "Mercurial Resolve" works brilliantly for case 1, but in case 2, "Tool Resolve" doesn't always do what I expect. If Beyond Compare thinks the changes are sufficiently separated it will auto-merge them. I pretty much never want it to do this. Okay, the changes are in separate bits of the file so it looks easy, but if they relate to the way a common function is called (or incompatible fixes for the same issue) there may well be conflicts that aren't apparent: this is why I chose "Tool Resolve" in the first place.
I can, of course, use the three-way diff button after Beyond Compare does the auto-merge, but in our department we've had quite a lot of incorrect merges as a result of this. The reason is that if it's a manual merge you get a different layout of the four files (base, local, other and result) to the layout with the three-way diff (in the three-way diff you don't get all four files: only local other and result), so it's easy to get confused and save the wrong thing.
I don't care whether the auto conflict resolution is done by Mercurial or Beyond Compare. I care whether the conflict resolution is automatic or manual.