Dan Price pointed out to me a week or two ago that merging conflicts is
less convenient under Mercurial than under Teamware, because once you
start merging, Mercurial wants you to finish.  If you try to bail out in
the middle, you get told

  you can redo the full merge using:
    hg update -C <rev1>
    hg merge <rev2>

But as the text says, that's redoing the *full* merge.  That's not
helpful, because it clobbers the files you've already merged.  You can't
just rerun "hg merge" because you'll get an error message about how
there's already an ucommitted merge in progress.  You can manually merge
the remaining files, but there are a couple gotchas.

First gotcha: you have to keep track of which files still need merging.

Second gotcha: there's no convenient way to do a full 3-way merge.  You
have to manually extract the ancestor and other head for each file
(e.g., using "hg cat").

I brought this up on the Mercurial list a couple days ago, but Matt
doesn't see this as much of a problem.  He suggested using a merge
script that does a CVS-style merge on all the files that are in
conflict.  Then once "hg merge" has completed, look for files that have
conflict markers (to handle the changes that the script couldn't do for
you).

I'm not wild about this approach.  One minor reason is that I like
having a side-by-side view like what gpyfm gives.  Also, a CVS-style
merge will perform some changes silently.  That can be risky, since it
can introduce semantic changes that are still legal from the compiler's
point of view, but which might introduce bugs (e.g., change something
from an array to a pointer).  

On the other hand, since merging with Mercurial is a two-step process,
the person doing the merge can review the entire set of changes and fix
things up as needed, before committing the merge.

What do you all think?  Would it be acceptable to go with Matt's
suggestion to start, and then add better support for using graphical
tools sometime in the future?

mike
_______________________________________________
tools-discuss mailing list
tools-discuss@opensolaris.org

Reply via email to