Don't break the wire protocol (Re: [PATCH 14 of 15] sshserver: support parentdeltas)

Matt Mackall mpm at selenic.com
Tue Jul 27 11:46:56 CDT 2010


[working through my backlog]

On Mon, 2010-07-12 at 16:19 +0530, Pradeepkumar Gayam wrote:
>      def do_changegroupsubset(self):
> -        argmap = dict([self.getarg(), self.getarg()])
> +        argmap = dict([self.getarg(), self.getarg(), self.getarg()])

This (and all the related protocol patches) are COMPLETELY WRONG.

I hope I have your attention, because I've tried to tell you this since
day one. This part is HARD and your project will not succeed until you
start talking to people to understand what the requirements are.

The wire protocol is append-only. You cannot change the behavior of any
existing commands. This is how we ensure backwards compatibility. Your
above change means that all old clients just broke.

You will need to add a completely new command. That's simple enough but
we've got more than one new feature it's going to need to support and
several problems with the old command to fix. And I'm quite sure you
don't yet know about all of those and won't be able to discover them
without talking to other developers.

Stop coding and start talking to people.

-- 
Mathematics is the supreme nostalgia of our time.




More information about the Mercurial-devel mailing list