[darcs-users] Re: darcs - the CVS replacement for our company?

Catalin Marinas catalin.marinas at arm.com
Tue Mar 1 16:36:54 UTC 2005

David Roundy <droundy at abridgegame.org> wrote:
> Large sized repositories (e.g. the linux kernel) can take a long time to do
> almost anything, and can require unreasonable amounts of RAM.  I suspect
> this won't be a problem, but it's something to consider if you've got a
> lot of source code.

One thing came to mind while reading this - are any of the patches
(the files on disk) already in the current repository modified during
a merge operation with a parent repository or only the newly added
patches are modified by the commutation operators? If not, from my
understanding of the patch theory, the following can happen:

Assuming the following patches

  Parent: B A

A child branches and continues the development with patch c:

  Child: c B A

When later merging latest developments on the parent tree (C B A),
the c^-1 patch will be commuted with C so that the child tree becomes:

  Child: C' c B A

It is my understanding that at this point, (c^-1)' is discarded (or
not even computed). If "c" is never pushed to the parent repository
(as it might happen frequently with a tree like Linux where the main
developers don't use darcs), (c^-1)' will always be computed against
C, D, E... patches from the parent repository, and thus all the
patches after branch will always be loaded into memory at a merge

The different way of doing this would be to determine c' by commuting
it with C^-1 and the child tree would be (c' C B A), thus modifying
the existing patch c.

Are my assumptions correct?



More information about the darcs-users mailing list