comparison mercurial/wireproto.py @ 37412:1d459f61b42a

wireproto: don't special case bundlecaps, but sort all scsv arguments Differential Revision: https://phab.mercurial-scm.org/D3170
author Joerg Sonnenberger <joerg@bec.de>
date Fri, 06 Apr 2018 22:16:11 +0200
parents afcfdf53e4b5
children 33af46d639b4
comparison
equal deleted inserted replaced
37411:3e1688711efd 37412:1d459f61b42a
295 295
296 def getbundle(self, source, **kwargs): 296 def getbundle(self, source, **kwargs):
297 kwargs = pycompat.byteskwargs(kwargs) 297 kwargs = pycompat.byteskwargs(kwargs)
298 self.requirecap('getbundle', _('look up remote changes')) 298 self.requirecap('getbundle', _('look up remote changes'))
299 opts = {} 299 opts = {}
300 bundlecaps = kwargs.get('bundlecaps') 300 bundlecaps = kwargs.get('bundlecaps') or set()
301 if bundlecaps is not None:
302 kwargs['bundlecaps'] = sorted(bundlecaps)
303 else:
304 bundlecaps = () # kwargs could have it to None
305 for key, value in kwargs.iteritems(): 301 for key, value in kwargs.iteritems():
306 if value is None: 302 if value is None:
307 continue 303 continue
308 keytype = gboptsmap.get(key) 304 keytype = gboptsmap.get(key)
309 if keytype is None: 305 if keytype is None:
310 raise error.ProgrammingError( 306 raise error.ProgrammingError(
311 'Unexpectedly None keytype for key %s' % key) 307 'Unexpectedly None keytype for key %s' % key)
312 elif keytype == 'nodes': 308 elif keytype == 'nodes':
313 value = encodelist(value) 309 value = encodelist(value)
314 elif keytype in ('csv', 'scsv'): 310 elif keytype == 'csv':
315 value = ','.join(value) 311 value = ','.join(value)
312 elif keytype == 'scsv':
313 value = ','.join(sorted(value))
316 elif keytype == 'boolean': 314 elif keytype == 'boolean':
317 value = '%i' % bool(value) 315 value = '%i' % bool(value)
318 elif keytype != 'plain': 316 elif keytype != 'plain':
319 raise KeyError('unknown getbundle option type %s' 317 raise KeyError('unknown getbundle option type %s'
320 % keytype) 318 % keytype)