# HG changeset patch # User Boris Feld # Date 2018-01-29 09:28:10 # Node ID 84965e5f32419e7363fbd5b94401e3db9bf18f0a # Parent e35320ce804383c84606978e7e1159e01424cb81 streamclone: extract requirements formatting It will be reused for the formatting of the requirements of the stream v2 part requirement and later for the stream v2 requirements. Differential Revision: https://phab.mercurial-scm.org/D1949 diff --git a/mercurial/exchange.py b/mercurial/exchange.py --- a/mercurial/exchange.py +++ b/mercurial/exchange.py @@ -199,6 +199,14 @@ def readbundle(ui, fh, fname, vfs=None): else: raise error.Abort(_('%s: unknown bundle version %s') % (fname, version)) +def _formatrequirementsspec(requirements): + return urlreq.quote(','.join(sorted(requirements))) + +def _formatrequirementsparams(requirements): + requirements = _formatrequirementsspec(requirements) + params = "%s%s" % (urlreq.quote("requirements="), requirements) + return params + def getbundlespec(ui, fh): """Infer the bundlespec from a bundle file handle. @@ -247,8 +255,7 @@ def getbundlespec(ui, fh): return '%s-%s' % (comp, version) elif isinstance(b, streamclone.streamcloneapplier): requirements = streamclone.readbundle1header(fh)[2] - params = 'requirements=%s' % ','.join(sorted(requirements)) - return 'none-packed1;%s' % urlreq.quote(params) + return 'none-packed1;%s' % _formatrequirementsparams(requirements) else: raise error.Abort(_('unknown bundle type: %s') % b)