[darcs-users] darcs conflicts/dependencies -- is patch theory the place to start?
AntC
anthony_clayden at clear.net.nz
Mon Sep 10 21:54:48 UTC 2012
Kevin Quick <quick <at> sparq.org> writes:
>
> On Sun, 09 Sep 2012 19:04:15 -0700, AntC <anthony_clayden <at>
clear.net.nz> wrote:
>
> > I'm trying to understand conflicts and why they're so problematic. I saw
> > in one of the papers an example:
>
> Without knowing where the original citation came from ...
Thanks Kevin, my later post [sorry for the double-posting] gives the citation
to papers by Ian L. And see my response to Owen for most of the discussion.
>> [snip]
> One thing to be aware of is that a Create does not include any contents
> whatsoever.
Yes, I knew that.
> An additional consideration here is how darcs handles patches of identical
> impact; i.e. are the two Create F patches identical. If two patches have
> identical impact, Patch Theory can consider them to be interchangeable.
> In actuality, the handling of this scenario has been one of the areas in
> which the darcs implementation has been evolving.
Yes, Owen pointed me to the AddAdd wiki. The problem is that if two patches
have identical effect (in the same context), is that accidental or are they
really the *same* patch? For files with standard names (like Makefile), it's
really hard to tell.
>
> The pull will come from the repository represented by Fork A. It will
> start with your selection Change F, add to it the Create F as a dependency
> as it commutes backward to O. Once it reaches O, it has the minimal set
> of patches required to Then it will attempt to apply that patch bundle to
> the repository designated as Fork B. To do this, darcs removes all
> identical patches from the bundle (as determined by the patch's hash
> identifier) that also exist Fork B.
Thanks. Owen also described something similar. I hadn't before that seen any
of the theory papers talking about removing identical patches.
> On a more abstract level, Patch Theory ...
> ... does not require, nor implement a DAG of patches, and in any particular
> repository, all patches are active ...
Yes, I kinda get it that a repo is a *set* (or rather, a *bag*) of patches.
But I'm failing to 'wash out my brain' with the DAG mental model. And it's not
always easy to think of a patch being the same in two different repos when
it's morphed en route because of commutations.
> You might also be interested in the following paper:
>
http://www.staff.science.uu.nl/~swier004/Publications/PrincipledVersionControl.
pdf
>
Yes, I've read that, and my other post refers to it for the idea of a file's
GUID.
The problem with that approach is that a practical VCS only gets to see the
repo intermittenly (at record points). A lot can have changed (especially
w.r.t. contents of files). How does the VCS know which files and which lines
got copied/changed vs. deleted/inserted? How can it keep track of all the
internal file id's and line id's?
I suppose it could ask the developer, but I can guess what most would say to
that sort of nit-picking bureaucratic book-keeping.
AntC
More information about the darcs-users
mailing list