[darcs-users] Re: darcs - the CVS replacement for our company?
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