[darcs-users] Fwd: Towards a conflict-free revision control system.

Ian Lynagh igloo at earth.li
Wed Feb 11 22:17:12 UTC 2009

On Wed, Feb 11, 2009 at 09:43:58PM +0000, Simon Marlow wrote:
> Ian Lynagh wrote:
> >And what should it mean to cherry pick a patch without one of its
> >dependencies? You get a patch that you can't apply?
> Imagine cherry picking the patch with its dependencies, and then pulling 
> in the inverse of the dependencies too.  That will result in a conflict, 
> but in exactly the places you want: the places where the cherry-picked 
> patch depends on a patch that you didn't want to pull.  Then you record 
> a conflict resolution patch.
> If this could be made to work, I think it would be a killer feature.

So if we start with the repo
    {A}                 (A is a megapatch)
and someone else has
    {A, B, C}
(where C depends on B) and we want C but not B, then I was suggesting we
"force-pull" C, leaving us with
and unrecorded changes of C, plus the primitive patches in B that C
depends on.

I think you are proposing that we end up with
    {A, B, C, B^}       (X^ means X inverse)
and unrecorded changes marking the conflicts between B^ and C? That
would also work, but personally I find it less pleasant. Mostly this is
not for any good reason, although it does have the disadvantage that you
can't easily later decide to pull B after all. On the flipside, it does
mean that our repo knows that it contains C, which I means that we'll be
able to pull in some patches that depend on C but don't conflict with
the B^ patch.

There's no reason we couldn't have both options available, of course.


More information about the darcs-users mailing list