[darcs-users] RE: current status of darcs

Simon Peyton-Jones simonpj at microsoft.com
Wed Mar 7 20:52:54 UTC 2007


|   1. The conflict bug.  I think people underestimate how bad this is,
|      or perhaps it affects larger projects much more than smaller ones.
|      In GHC, several branches we have created have needed to be merged
|      using diff+patch, and merging has taken far more developer time
|      thank it should.

Right.  As I understand it, a Key Goal of darcs is to support the following scenario

1. Joe wants to implement a new feature in GHC.

2. He gets the current HEAD

3. He makes lots of changes, and records them in small increments,
        in his local repository

4. At intervals, he pulls changes from the HEAD
   Puling these changes causes conflicts here and there, where he has modified
        the same code as in the HEAD.   But that's fine.  He
        fixes the conflicts and records.  The exact mechanism isn't
        important, but Joe ends up with a repository that has all the
        HEAD patches, plus some of his own

    He needs to do step 4 regularly, partly because he doesn't want to diverge
    too far (conflicts are easier to resolve earlier) and partly to get bug-fixes and
    features from the HEAD that he needs.

5. Now he's ready to submit!  He does a final pull from the HEAD,
        to ensure there are no remaining conflicts, and then pushes
        to the HEAD

The trouble is that, unless I misunderstand, darcs simply does not support this scenario, at least not for projects as big as GHC.  Step 4 doesn't work, and there is no viable work-around.

The ONLY way I know to achieve this sort of development is as follows.

4. * keep a copy of the HEAD Joe started with
    * diff the original HEAD from Joe's current repository
    * darcs-get a new copy of HEAD
    * use 'patch' to apply the (very big) patch to this new copy
    * resolve conflicts
    Result is a new repository that contains both the current HEAD
    and Joe's work.  But all his recording and recorded messages are lost.
    All he has is One Big Patch.


What bothers me is that this "doesn't work" scenario is the *primary* one that I believe darcs is intended to address.  I know that it's a hard problem.  It's not just a question of fixing a coding error. But it's a very, very important problem.

Simon




More information about the darcs-users mailing list