[darcs-users] A proposal: patch incoherence

Andrew Pimlott andrew at pimlott.net
Fri Nov 19 23:56:23 UTC 2004


On Fri, Nov 19, 2004 at 08:34:02PM +0100, Juliusz Chroboczek wrote:
> Every patch carries a list of patches that it is (directly) incoherent
> with.  (Incoherence is antireflexive and symmetric.)

In one sense, it cannot be symmetric, because only one patch knows that
it is incoherent with the other.  This is good, because normally, you
want the newer patch.  I would simplify most of the usage by saying that
darcs always takes the newer patch unless you override.  Can you think
of a common reason for wanting the old patch?

> There should be a way to record a change and explicitly mark the
> resulting patch as being incoherent with some other patch(es).  While
> I'm bad at designing user interfaces, I would reckon that the best way
> would be to have a |darcs incoherent| command which marks pending as
> being incoherent with a given patch; a subsequent record would
> actually create an incoherent patch.

Pending will not necessarily end up as a single patch.  I think marking
incoherent should be an option to record, eg darcs record
--incoherent-with.

> Since unrecord creates a new empty patch that conflicts with the patch
                                                ^^^^^^^^^
ITYM "incoheres" with.  Admit it, you just want more references to
quantum mechanics.  ;-)

> 4.4 Arch-style merges
> 
> Darcs merges are the right thing in many cases.  However, they some-
> times are not desirable, either because you want to keep track of the
> history of the merge, or because they generate too many conflicts and
> hence are unbearably slow.  In that case, you find yourself wishing
> that Darcs could implement Arch-style merges.

I think that if you really want Arch-style merges, you have given up on
darcs.  Consider that after doing one such merge, you can never use
darcs on patches that depend on the patches in the merge.

History is a pretty trivial problem that can be solved by keeping some
sort of history log associated with each patch, or something like that.
I hope someone will tackle this, because it would be extremely useful.

The performance problem will go away when I wave my hand.  ~wave~  There
is no performance problem.

I think it would be a shame if we ever document how to do merges "behind
darcs's back" (though I know it has already been discussed here).

Andrew




More information about the darcs-users mailing list