More on merge SourceMania back to mercurial
Christopher Li
hg at chrisli.org
Sun Jun 5 18:18:07 UTC 2005
On Sun, Jun 05, 2005 at 12:12:48PM -0400, Chris Mason wrote:
> On Saturday 04 June 2005 14:49, Christopher Li wrote:
> >
> > > Yes. But redoing the diff is likely faster than doing a single extra
> > > seek. And merging is not the common case, as you usually will not have
> > > to merge a given file. Checkout is much more important.
> >
> > As I said that before and I said that again. Merging _IS_ the common
> > case for distributed SCM. You don't see it as individual developer,
> > most of the time you are pulling from the upstream. The high level
> > maintainer like Linus, what they do most are merging other people's
> > change, often one change set at a time.
> >
> > A design that penalize merging is just wrong for distributed SCM.
> > It is the same reason you want to make sure checkn is fast.
>
> Please provide numbers here. Always diffing against parent 1 is a major
> change in how the deltas behave and interact with the system, both for
> performance and space savings.
In terms of repo storage back end, SourceMania is a rewrite from scratch
focus on deliver auto merge feature on top of what mercurial has. So the replog
layer is completely overhauled. Last time I check it, it is about 3% performance
decrease on checking out a kernel tree.
That is a linear case. The decrease is mainly come from walking the index back
wards, the actual reading doesn't make much difference because they end up group
together. I guess I can write walk back in C and get that 3% back. But it doesn't
seem worth the effort right now.
Check in is pretty part is pretty much the same. No test on non-linear case yet.
>
> So, what does this change do to mercurial performance (space and speed) and
> how much does it actually help in merging speed?
Depend on how you tune the cost evaluate function, it can slide between tracing
space for speed. It should be in the same range as what mercurial has.
As for auto merging. SM merging require a diff against p1. If I don't have that in
revlog and I have to store it some where else. Or redo the diff is equally bad.
Chris
More information about the Mercurial
mailing list