[PATCH] wireproto: enable optional args for known() for future extensibility

Matt Mackall mpm at selenic.com
Wed May 25 15:13:07 CDT 2011


On Wed, 2011-05-25 at 08:26 +0200, Peter Arrenbrecht wrote:
> # HG changeset patch
> # User Peter Arrenbrecht <peter.arrenbrecht at gmail.com>
> # Date 1306252096 -7200
> # Node ID 9d31f762cdf263329aa80e0b8d9ecc38a2b3bf44
> # Parent  bb5cbc16349e47adc8f8300fed3c397e0f54f4ec
> wireproto: enable optional args for known() for future extensibility
> 
> Firstly, I think we should do this for all new wire commands, just
> to be on the safe side. So I want to get this into the 1.9 release.

This breaks compatibility with anyone who's running ssh servers on the
default branch, right?

> Secondly, there actually is potential here that sometimes the server
> can know that the number of its nodes which can possibly still be
> undecided on the client is small. It might then just send them along
> directly (cutting short the end game). This, however, requires
> walking the graph on the server, which can be expensive, so for the
> moment we're not actually doing it.
> 
> diff --git a/mercurial/wireproto.py b/mercurial/wireproto.py
> --- a/mercurial/wireproto.py
> +++ b/mercurial/wireproto.py
> @@ -288,7 +288,7 @@
>          success = 0
>      return "%s %s\n" % (success, r)
>  
> -def known(repo, proto, nodes):
> +def known(repo, proto, nodes, others):
>      return ''.join(b and "1" or "0" for b in repo.known(decodelist(nodes)))
>  
>  def pushkey(repo, proto, namespace, key, old, new):
> @@ -412,7 +412,7 @@
>      'getbundle': (getbundle, '*'),
>      'heads': (heads, ''),
>      'hello': (hello, ''),
> -    'known': (known, 'nodes'),
> +    'known': (known, 'nodes *'),
>      'listkeys': (listkeys, 'namespace'),
>      'lookup': (lookup, 'key'),
>      'pushkey': (pushkey, 'namespace key old new'),


-- 
Mathematics is the supreme nostalgia of our time.




More information about the Mercurial-devel mailing list