[darcs-users] Re: [issue190] crash in function new_ur
Juliusz.Chroboczek at pps.jussieu.fr
Tue Jul 4 13:42:15 UTC 2006
I'm redirecting this to darcs-users -- I guess that's the right place.
> Right now, my rule of thumb, having lurked on darcs-users and
> darcs-devel for a while, is to avoid resolving conflicts by recording
> more patches, if at all possible.
> Simon complains, quite rightly, that this is hard in general -
> especially when the patch that conflicts has a bunch of dependencies,
> you might end up having to re-do a whole tree of patches.
Yes. Darcs is pretty good at short-term branches that get discarded
after a few dozen patches, or branches that follow very closely each
other, as with the stable/unstable Darcs repositories. It fails
miserably when you want to have long-term, divergent branches, as you
usually do with CVS.
It looks like the divergence between your two branches has just become
too complex for the algorithms in the current version of Darcs to
manage: the logs show nested mergers -- conflicts conflicting with
conflicts. As SPJ notes, you'll want to discard one of the two
> 1 Start a new repository "fresh-variant", based on "HEAD".
> 2 Somehow (not quite sure how) make a big patch that gives all the
> patches in 'variant' that are not in "HEAD".
If you've got only a small number of patches to merge, you can
generate one patch for each Darcs patch (darcs diff -u --patch=...) and
apply them one by one.
If you've got many, do the following. Tag HEAD. Pull the tag into
variant. Darcs diff -u --from-tag. Unless you've got weirdly ordered
patches, you shouldn't get a commutation failure doing that.
> 3 Apply this patch manually to "fresh-variant", and resolve conflicts
> 4 Record the result as one big patch in "fresh-variant".
It doesn't matter much -- you can also record them as individual
patches. The important point is that you get rid of the mergers.
> 5 Abandon "variant".
> 6 Repeat the exercise whenever we want to catch up with HEAD.
Fortunately, you don't need to do that. Keep working with fresh-variant
the Darcs way, safe in your knowledge of a workaround if Darcs were to
More information about the darcs-users