[darcs-devel] Re: [darcs-conflicts] inverses as resolutions
Ganesh Sittampalam
ganesh at earth.li
Sat Jul 15 14:20:12 PDT 2006
On Sat, 15 Jul 2006, David Roundy wrote:
> On Sat, Jul 15, 2006 at 10:52:44AM +0100, Ganesh Sittampalam wrote:
>> Resolutions are starting to look more and more like inverse patches to me.
>> Why can't they just be inverse patches, and not kill off the resolved
>> patch? Given that we want resolutions to commute like AA^ (etc), why
>> not just make AA^ commute how we want and use that directly?
>
> Mostly because we already tried that and failed. That's the idea behind
> conflictors.
With conflictors we wanted a one-one mapping between the original patches
and the conflictors, in the sense that if you pulled B into a repo with
just A in it, you'd end up with a repo with just two patches, whether or
not A and B conflicted.
That was why they caused such problems, because ever more complicated
scenarios led to ever more complicated conflictors to keep track of the
necessary patches to be inverted at each stage in the sequence, together
with enough information to guarantee that we could work out what should
change if they were commuted.
With this approach, and following your earlier idea (just mentioned on IRC
I think) of just magicing resolutions into being as needed, we can magic
as many inverses into being as we need, whenever we need them. So if a
pull creates a new live conflict, we add all the inverses needed for these
live conflicts immediately. Mark these inverses as "provisional" somehow,
so they don't get pulled elsewhere and so that they effectively form a
record of what is in conflict in this repository. We can keep all the
patches in the repository in a sequence, with no need for branches. Once
the user decides on a resolution, some of the inverses will become
"concrete" and placed in the resolution patch.
I haven't properly considered any difficult scenarios, so I'll try to do
that next. But somehow this view "feels" right to me.
Another way of looking at the difference with conflictors is that
conflictors tried to codify conflicts in a form that could be correctly
pulled elsewhere. Now that we've given up that idea, we just have to
recalculate conflicts locally each time, and things are much simpler. The
fundamental idea of introduces inverses into the patch sequence was sound,
it's just that we were trying to do too much with them.
Cheers,
Ganesh
More information about the darcs-devel
mailing list