GSoC proposal.

Matt Mackall mpm at selenic.com
Sat Apr 3 13:52:39 CDT 2010


On Sat, 2010-04-03 at 17:03 +0200, Benoit Boissinot wrote:
> On Fri, Apr 02, 2010 at 05:14:00AM +0530, Pradeepkumar Gayam wrote:
> > Hi,
> > 
> > I am a student from Indian Institute of Technology, India. I am interested
> > in implementation of parent delta plan. I was told some work was done on
> > this idea. I would like to know the details of the work done.
> 
> Status of parent-delta:
> 
> - the changes to revlog are mostly done, I can share the patches if
>   needed. If I remember correctly, I did it by adding a flag in the
>   revlog and in the index entry.
> 
> - but once the revlog side is done there are still some things that
>   aren't clear, especially the backward compatibility.
> 
> First, if you look at addgroup() in revlog.py, you'll see that when
> adding new revisions, we directly use the delta sent in the stream: we
> don't reconstruct the text of the revision, we directly store the delta.
> 
> So we try very hard to re-use what have been sent, it means that if the
> server we're talking to doesn't use parent delta, we will have to
> reconstruct many revisions, and rebuilt a new delta. This can be very
> expensive (it needs benchmarking, but in my opinion, this is roughly the
> same complexity as calling "shrink-revlog", and it can take *a lot* of
> time for some projects.
> 
> I currently am not sure what we should do:
> - re-delta on pull as needed (-> pull might become very slow, clone too)
> - re-use the delta from the changegroup stream -> then parent-delta
>   won't help for most repo)

I think we should probably start with the first option, on by default.
Eventually everyone will upgrade and everything will be fast again.
Clone will be slow for the projects that need this feature most and
they'll be the most eager to upgrade.

-- 
http://selenic.com : development and support for Mercurial and Linux




More information about the Mercurial-devel mailing list