[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