[darcs-devel] Re: Example Conflicts
Ian Lynagh
igloo at earth.li
Fri Aug 3 05:54:14 PDT 2007
On Fri, Aug 03, 2007 at 05:04:59AM -0700, Jason Dagit wrote:
> On 8/3/07, Simon Marlow <simonmarhaskell at gmail.com> wrote:
> > David Roundy wrote:
> > > On Wed, Aug 01, 2007 at 01:58:29AM +0100, Ian Lynagh wrote:
> >
> > >> And the "cancel A" patch doesn't have any sort of reference to B in it?
> > >
> > > Right.
> >
> > I seem to remember there was a problem with this approach. Perhaps not a
> > technical problem, but a conceptual one.
> >
> > Something like this:
> >
> > Suppose patches A and B conflict, and David and Ian both have repositories
> > containing A and B.
> >
> > Ian resolves in favour of A, records cancel(B).
> > David resolves in favour of B, records cancel(A).
> >
> > Ian pulls from David, and now has both cancel(A) and cancel(B). At this
> > point we expect a conflict, because both David and Ian have resolved the
> > original conflict in different ways; but cancel(A) and cancel(B) commute.
> > Don't they?
>
> Wouldn't we expect both A and B to be canceled instead of a conflict?
These are two conflicting resolutions of the A+B conflict, so logically
they ought to conflict. In your proposal /conflicts between two patches/
aren't actually resolved though, you just /cancel individual patches/
until all the conflicts are gone, so in your world you do just get A and
B both being cancelled.
Making the resolutions conflict requires a more complex system, and what
you are proposing is almost on the way to the more complex system (I
think), so is probably worth implementing first regardless.
My biggest concern, for both systems, is the UI.
Thanks
Ian
More information about the darcs-devel
mailing list