GSoC proposal.

Benoit Boissinot benoit.boissinot at ens-lyon.org
Sat Apr 3 10:03:46 CDT 2010


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)

Maybe a combination of the two depending on a config?

Benoit


-- 
:wq


More information about the Mercurial-devel mailing list