[darcs-users] unique features + exponential time issue

Stephen J. Turnbull stephen at xemacs.org
Wed Oct 24 23:00:54 UTC 2007


Petr Rockai writes:

 > Example:
 > 
 > alph
 > beta
 > gamma
 > 
 > I independently fix the line "alph" to read "alpha", and in another
 > branch, i decide i want to replace "beta" with "delta". Now, when i
 > merge the branches, darcs correctly produces:
 > 
 > alpha
 > delta
 > gamma
 >
 > However, when i use diff3 -m, i get:

   [conflict]

And you should.

I would never use a merge tool that didn't signal a conflict in this
case (and I'm pretty sure Darcs will, btw).  Even when, as in your
example, the same developer has made both changes.  The chance that
two independently made changes in adjacent lines interact semantically
is way too high to be ignored.  Here's an amusing example (though
perhaps not to the poor sod who finds the merged file and tries to
debug it):

  // This does all the work.
  maybe_work ();
  clean_up ();

Now in branch A, we make a note:

  // This does all the work.  FIXME: Sometimes it doesn't. bug #42.
  maybe_work ();
  clean_up ();

and in branch B, we have a brainstorm:

  // This does all the work.
  quickly_and_serendipitously_correctly_work ();
  clean_up ();

You don't want to merge that, rather, pick B.

Note that this is isomorphic to your "perfectly capable of a correct
merge" example.



More information about the darcs-users mailing list