atom feed13 messages in com.selenic.mercurial-devel[GSoC] Wireprotocol changes for paren...
FromSent OnAttachments
Pradeepkumar GayamJul 28, 2010 4:31 pm 
Benoit Boissinot GSoCJul 29, 2010 2:49 am 
Matt MackallJul 30, 2010 10:33 am 
Pradeepkumar GayamAug 1, 2010 12:05 am 
Matt MackallAug 1, 2010 6:48 am 
Benoit BoissinotAug 1, 2010 7:13 am 
Matt MackallAug 1, 2010 7:32 am 
Vishakh HarikumarAug 1, 2010 12:04 pm 
Matt MackallAug 1, 2010 12:29 pm 
Pradeepkumar GayamAug 1, 2010 3:05 pm 
Pradeepkumar GayamAug 1, 2010 3:08 pm 
Vishakh HarikumarAug 2, 2010 9:38 am 
Gilles MorisAug 9, 2010 12:13 am 
Subject:[GSoC] Wireprotocol changes for parentdelta
From:Pradeepkumar Gayam (in3@gmail.com)
Date:Jul 28, 2010 4:31:23 pm
List:com.selenic.mercurial-devel

Hi,

I am almost done with the revlog and other stuff, and started working on wireprotocol. I sent some patches to the list. That was my basic idea to implement. But I was told I am heading in wrong direction. *

Implementaion:

*1)* *Query the server if it is capable of sending parentdelta'ed changegroup. 2) Figure out which is most efficient method to add changegroup. 3) Request the chagegroup.

To carry out this process what I previously did was find capabilities of remote server, if the server is new then request a changegroup with parent deltas. It was done like this: (before unification)

if pdelta: return self.do_cmd("changegroup", roots=n, parentdelta='parentdelta') else: return self.do_cmd("changegroup", roots=n)

and server responds as below:

pdelta = 'parentdelta' in req.form return repo.changegroup(nodes, 'serve', pdelta)

I had to send a weird "parentdelta='parentdelta'" cause I just want to make the server aware that I want parentdelta'd changegroup. In the end it turns out to be the wrong way to implement.

After little bit of thinking I realized adding a new command is more safe and gives better functionality.

So now it looks like:

1) Query server's capabilities 2) If capable of parentdelta: Send the command "parentdelta" notifying type of repo client has(Old/New) and server replies with type of repo else: Do nothing. 3) Ask server for appropriate changegroup.

This is the idea currently I have in my mind. Any kind of improvements, new way of implementation, suggestions are welcome.

P.S: Link <http://mercurial.selenic.com/wiki/ParentDeltaPlan> to Parentdeltaplan

Thanks - Pradeep