[PATCH] bundle2: rename format, parts and config to final names

Eric Sumner ericsumner at fb.com
Wed Apr 15 08:59:52 CDT 2015


This patch is making work on bundle2 code much more difficult than it used
to be, because it changes all the parttypes from unique strings into ones
that are very common in the codebase.  Is it too late to change them at
this point?

  -- Eric

On 4/9/15, 1:35 PM, "Pierre-Yves David" <pierre-yves.david at ens-lyon.org>
wrote:

># HG changeset patch
># User Pierre-Yves David <pierre-yves.david at fb.com>
># Date 1428611148 14400
>#      Thu Apr 09 16:25:48 2015 -0400
># Node ID 71e0b8889f82b620c2ba42f51fe088c00877caba
># Parent  19c5b091396036e2ee63555b39a5852652b49d18
>bundle2: rename format, parts and config to final names
>
>It is finally time to freeze the bundle2 format! To do so we:
>- rename HG2Y to HG20,
>- drop "b2x:" prefix from all part names,
>- rename capability to "bundle2-exp" to "bundle2"
>- rename the hook flag from 'bundle2-exp' to 'bundle2'
>
>diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py
>--- a/mercurial/bundle2.py
>+++ b/mercurial/bundle2.py
>@@ -356,11 +356,11 @@ def _processpart(op, part):
>             handler(op, part)
>         finally:
>             if output is not None:
>                 output = op.ui.popbuffer()
>         if output:
>-            outpart = op.reply.newpart('b2x:output', data=output,
>+            outpart = op.reply.newpart('output', data=output,
>                                        mandatory=False)
>             outpart.addparam('in-reply-to', str(part.id),
>mandatory=False)
>     finally:
>         # consume the part content to not corrupt the stream.
>         part.seek(0, 2)
>@@ -406,11 +406,11 @@ class bundle20(object):
> 
>     Use the `addparam` method to add stream level parameter. and
>`newpart` to
>     populate it. Then call `getchunks` to retrieve all the binary chunks
>of
>     data that compose the bundle2 container."""
> 
>-    _magicstring = 'HG2Y'
>+    _magicstring = 'HG20'
> 
>     def __init__(self, ui, capabilities=()):
>         self.ui = ui
>         self._params = []
>         self._parts = []
>@@ -614,11 +614,11 @@ class unbundle20(unpackermixin):
>         return None
> 
>     def compressed(self):
>         return False
> 
>-formatmap = {'2Y': unbundle20}
>+formatmap = {'20': unbundle20}
> 
> class bundlepart(object):
>     """A bundle2 part contains application level payload
> 
>     The part `type` is used to route the part to the application level
>@@ -732,11 +732,11 @@ class bundlepart(object):
>                 yield chunk
>         except Exception, exc:
>             # backup exception data for later
>             exc_info = sys.exc_info()
>             msg = 'unexpected error: %s' % exc
>-            interpart = bundlepart('b2x:error:abort', [('message', msg)],
>+            interpart = bundlepart('error:abort', [('message', msg)],
>                                    mandatory=False)
>             interpart.id = 0
>             yield _pack(_fpayloadsize, -1)
>             for chunk in interpart.getchunks():
>                 yield chunk
>@@ -980,46 +980,46 @@ class unbundlepart(unpackermixin):
>             adjust = self.read(internaloffset)
>             if len(adjust) != internaloffset:
>                 raise util.Abort(_('Seek failed\n'))
>             self._pos = newpos
> 
>-capabilities = {'HG2Y': (),
>-                'b2x:listkeys': (),
>-                'b2x:pushkey': (),
>+capabilities = {'HG20': (),
>+                'listkeys': (),
>+                'pushkey': (),
>                 'digests': tuple(sorted(util.DIGESTS.keys())),
>-                'b2x:remote-changegroup': ('http', 'https'),
>+                'remote-changegroup': ('http', 'https'),
>                }
> 
> def getrepocaps(repo, allowpushback=False):
>     """return the bundle2 capabilities for a given repo
> 
>     Exists to allow extensions (like evolution) to mutate the
>capabilities.
>     """
>     caps = capabilities.copy()
>-    caps['b2x:changegroup'] = tuple(sorted(changegroup.packermap.keys()))
>+    caps['changegroup'] = tuple(sorted(changegroup.packermap.keys()))
>     if obsolete.isenabled(repo, obsolete.exchangeopt):
>         supportedformat = tuple('V%i' % v for v in obsolete.formats)
>-        caps['b2x:obsmarkers'] = supportedformat
>+        caps['obsmarkers'] = supportedformat
>     if allowpushback:
>-        caps['b2x:pushback'] = ()
>+        caps['pushback'] = ()
>     return caps
> 
> def bundle2caps(remote):
>     """return the bundle capabilities of a peer as dict"""
>-    raw = remote.capable('bundle2-exp')
>+    raw = remote.capable('bundle2')
>     if not raw and raw != '':
>         return {}
>-    capsblob = urllib.unquote(remote.capable('bundle2-exp'))
>+    capsblob = urllib.unquote(remote.capable('bundle2'))
>     return decodecaps(capsblob)
> 
> def obsmarkersversion(caps):
>     """extract the list of supported obsmarkers versions from a
>bundle2caps dict
>     """
>-    obscaps = caps.get('b2x:obsmarkers', ())
>+    obscaps = caps.get('obsmarkers', ())
>     return [int(c[1:]) for c in obscaps if c.startswith('V')]
> 
>- at parthandler('b2x:changegroup', ('version',))
>+ at parthandler('changegroup', ('version',))
> def handlechangegroup(op, inpart):
>     """apply a changegroup part on the repo
> 
>     This is a very early implementation that will massive rework before
>being
>     inflicted to any end-user.
>@@ -1039,18 +1039,18 @@ def handlechangegroup(op, inpart):
>     ret = changegroup.addchangegroup(op.repo, cg, 'bundle2', 'bundle2')
>     op.records.add('changegroup', {'return': ret})
>     if op.reply is not None:
>         # This is definitely not the final form of this
>         # return. But one need to start somewhere.
>-        part = op.reply.newpart('b2x:reply:changegroup', mandatory=False)
>+        part = op.reply.newpart('reply:changegroup', mandatory=False)
>         part.addparam('in-reply-to', str(inpart.id), mandatory=False)
>         part.addparam('return', '%i' % ret, mandatory=False)
>     assert not inpart.read()
> 
> _remotechangegroupparams = tuple(['url', 'size', 'digests'] +
>     ['digest:%s' % k for k in util.DIGESTS.keys()])
>- at parthandler('b2x:remote-changegroup', _remotechangegroupparams)
>+ at parthandler('remote-changegroup', _remotechangegroupparams)
> def handleremotechangegroup(op, inpart):
>     """apply a bundle10 on the repo, given an url and validation
>information
> 
>     All the information about the remote bundle to import are given as
>     parameters. The parameters include:
>@@ -1068,11 +1068,11 @@ def handleremotechangegroup(op, inpart):
>     try:
>         raw_url = inpart.params['url']
>     except KeyError:
>         raise util.Abort(_('remote-changegroup: missing "%s" param') %
>'url')
>     parsed_url = util.url(raw_url)
>-    if parsed_url.scheme not in capabilities['b2x:remote-changegroup']:
>+    if parsed_url.scheme not in capabilities['remote-changegroup']:
>         raise util.Abort(_('remote-changegroup does not support %s
>urls') %
>             parsed_url.scheme)
> 
>     try:
>         size = int(inpart.params['size'])
>@@ -1108,27 +1108,27 @@ def handleremotechangegroup(op, inpart):
>     ret = changegroup.addchangegroup(op.repo, cg, 'bundle2', 'bundle2')
>     op.records.add('changegroup', {'return': ret})
>     if op.reply is not None:
>         # This is definitely not the final form of this
>         # return. But one need to start somewhere.
>-        part = op.reply.newpart('b2x:reply:changegroup')
>+        part = op.reply.newpart('reply:changegroup')
>         part.addparam('in-reply-to', str(inpart.id), mandatory=False)
>         part.addparam('return', '%i' % ret, mandatory=False)
>     try:
>         real_part.validate()
>     except util.Abort, e:
>         raise util.Abort(_('bundle at %s is corrupted:\n%s') %
>             (util.hidepassword(raw_url), str(e)))
>     assert not inpart.read()
> 
>- at parthandler('b2x:reply:changegroup', ('return', 'in-reply-to'))
>+ at parthandler('reply:changegroup', ('return', 'in-reply-to'))
> def handlereplychangegroup(op, inpart):
>     ret = int(inpart.params['return'])
>     replyto = int(inpart.params['in-reply-to'])
>     op.records.add('changegroup', {'return': ret}, replyto)
> 
>- at parthandler('b2x:check:heads')
>+ at parthandler('check:heads')
> def handlecheckheads(op, inpart):
>     """check that head of the repo did not change
> 
>     This is used to detect a push race when using unbundle.
>     This replaces the "heads" argument of unbundle."""
>@@ -1140,31 +1140,31 @@ def handlecheckheads(op, inpart):
>     assert not h
>     if heads != op.repo.heads():
>         raise error.PushRaced('repository changed while pushing - '
>                               'please try again')
> 
>- at parthandler('b2x:output')
>+ at parthandler('output')
> def handleoutput(op, inpart):
>     """forward output captured on the server to the client"""
>     for line in inpart.read().splitlines():
>         op.ui.write(('remote: %s\n' % line))
> 
>- at parthandler('b2x:replycaps')
>+ at parthandler('replycaps')
> def handlereplycaps(op, inpart):
>     """Notify that a reply bundle should be created
> 
>     The payload contains the capabilities information for the reply"""
>     caps = decodecaps(inpart.read())
>     if op.reply is None:
>         op.reply = bundle20(op.ui, caps)
> 
>- at parthandler('b2x:error:abort', ('message', 'hint'))
>+ at parthandler('error:abort', ('message', 'hint'))
> def handlereplycaps(op, inpart):
>     """Used to transmit abort error over the wire"""
>     raise util.Abort(inpart.params['message'],
>hint=inpart.params.get('hint'))
> 
>- at parthandler('b2x:error:unsupportedcontent', ('parttype', 'params'))
>+ at parthandler('error:unsupportedcontent', ('parttype', 'params'))
> def handlereplycaps(op, inpart):
>     """Used to transmit unknown content error over the wire"""
>     kwargs = {}
>     parttype = inpart.params.get('parttype')
>     if parttype is not None:
>@@ -1173,23 +1173,23 @@ def handlereplycaps(op, inpart):
>     if params is not None:
>         kwargs['params'] = params.split('\0')
> 
>     raise error.UnsupportedPartError(**kwargs)
> 
>- at parthandler('b2x:error:pushraced', ('message',))
>+ at parthandler('error:pushraced', ('message',))
> def handlereplycaps(op, inpart):
>     """Used to transmit push race error over the wire"""
>     raise error.ResponseError(_('push failed:'),
>inpart.params['message'])
> 
>- at parthandler('b2x:listkeys', ('namespace',))
>+ at parthandler('listkeys', ('namespace',))
> def handlelistkeys(op, inpart):
>     """retrieve pushkey namespace content stored in a bundle2"""
>     namespace = inpart.params['namespace']
>     r = pushkey.decodekeys(inpart.read())
>     op.records.add('listkeys', (namespace, r))
> 
>- at parthandler('b2x:pushkey', ('namespace', 'key', 'old', 'new'))
>+ at parthandler('pushkey', ('namespace', 'key', 'old', 'new'))
> def handlepushkey(op, inpart):
>     """process a pushkey request"""
>     dec = pushkey.decode
>     namespace = dec(inpart.params['namespace'])
>     key = dec(inpart.params['key'])
>@@ -1200,36 +1200,36 @@ def handlepushkey(op, inpart):
>               'key': key,
>               'old': old,
>               'new': new}
>     op.records.add('pushkey', record)
>     if op.reply is not None:
>-        rpart = op.reply.newpart('b2x:reply:pushkey')
>+        rpart = op.reply.newpart('reply:pushkey')
>         rpart.addparam('in-reply-to', str(inpart.id), mandatory=False)
>         rpart.addparam('return', '%i' % ret, mandatory=False)
> 
>- at parthandler('b2x:reply:pushkey', ('return', 'in-reply-to'))
>+ at parthandler('reply:pushkey', ('return', 'in-reply-to'))
> def handlepushkeyreply(op, inpart):
>     """retrieve the result of a pushkey request"""
>     ret = int(inpart.params['return'])
>     partid = int(inpart.params['in-reply-to'])
>     op.records.add('pushkey', {'return': ret}, partid)
> 
>- at parthandler('b2x:obsmarkers')
>+ at parthandler('obsmarkers')
> def handleobsmarker(op, inpart):
>     """add a stream of obsmarkers to the repo"""
>     tr = op.gettransaction()
>     new = op.repo.obsstore.mergemarkers(tr, inpart.read())
>     if new:
>         op.repo.ui.status(_('%i new obsolescence markers\n') % new)
>     op.records.add('obsmarkers', {'new': new})
>     if op.reply is not None:
>-        rpart = op.reply.newpart('b2x:reply:obsmarkers')
>+        rpart = op.reply.newpart('reply:obsmarkers')
>         rpart.addparam('in-reply-to', str(inpart.id), mandatory=False)
>         rpart.addparam('new', '%i' % new, mandatory=False)
> 
> 
>- at parthandler('b2x:reply:obsmarkers', ('new', 'in-reply-to'))
>+ at parthandler('reply:obsmarkers', ('new', 'in-reply-to'))
> def handlepushkeyreply(op, inpart):
>     """retrieve the result of a pushkey request"""
>     ret = int(inpart.params['new'])
>     partid = int(inpart.params['in-reply-to'])
>     op.records.add('obsmarkers', {'new': ret}, partid)
>diff --git a/mercurial/bundlerepo.py b/mercurial/bundlerepo.py
>--- a/mercurial/bundlerepo.py
>+++ b/mercurial/bundlerepo.py
>@@ -238,11 +238,11 @@ class bundlerepository(localrepo.localre
>                  
>bundlename,
>                                                                 self.vfs)
> 
>         if isinstance(self.bundle, bundle2.unbundle20):
>             cgparts = [part for part in self.bundle.iterparts()
>-                       if (part.type == 'b2x:changegroup')
>+                       if (part.type == 'changegroup')
>                        and (part.params.get('version', '01')
>                             in changegroup.packermap)]
> 
>             if not cgparts:
>                 raise util.Abort('No changegroups found')
>diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py
>--- a/mercurial/changegroup.py
>+++ b/mercurial/changegroup.py
>@@ -69,11 +69,11 @@ class nocompress(object):
> 
> bundletypes = {
>     "": ("", nocompress), # only when using unbundle on ssh and old http
>servers
>                           # since the unification ssh accepts a header
>but there
>                           # is no capability signaling it.
>-    "HG2Y": (), # special-cased below
>+    "HG20": (), # special-cased below
>     "HG10UN": ("HG10UN", nocompress),
>     "HG10BZ": ("HG10", lambda: bz2.BZ2Compressor()),
>     "HG10GZ": ("HG10GZ", lambda: zlib.compressobj()),
> }
> 
>@@ -100,14 +100,14 @@ def writebundle(ui, cg, filename, bundle
>         else:
>             fd, filename = tempfile.mkstemp(prefix="hg-bundle-",
>suffix=".hg")
>             fh = os.fdopen(fd, "wb")
>         cleanup = filename
> 
>-        if bundletype == "HG2Y":
>+        if bundletype == "HG20":
>             import bundle2
>             bundle = bundle2.bundle20(ui)
>-            part = bundle.newpart('b2x:changegroup', data=cg.getchunks())
>+            part = bundle.newpart('changegroup', data=cg.getchunks())
>             part.addparam('version', cg.version)
>             z = nocompress()
>             chunkiter = bundle.getchunks()
>         else:
>             if cg.version != '01':
>diff --git a/mercurial/commands.py b/mercurial/commands.py
>--- a/mercurial/commands.py
>+++ b/mercurial/commands.py
>@@ -1219,11 +1219,11 @@ def bundle(ui, repo, fname, dest=None, *
> 
>     bundletype = opts.get('type', 'bzip2').lower()
>     btypes = {'none': 'HG10UN',
>               'bzip2': 'HG10BZ',
>               'gzip': 'HG10GZ',
>-              'bundle2': 'HG2Y'}
>+              'bundle2': 'HG20'}
>     bundletype = btypes.get(bundletype)
>     if bundletype not in changegroup.bundletypes:
>         raise util.Abort(_('unknown bundle type specified with --type'))
> 
>     if opts.get('all'):
>@@ -1916,11 +1916,11 @@ def _debugbundle2(ui, gen, **opts):
>     if not isinstance(gen, bundle2.unbundle20):
>         raise util.Abort(_('not a bundle2 file'))
>     ui.write(('Stream params: %s\n' % repr(gen.params)))
>     for part in gen.iterparts():
>         ui.write('%s -- %r\n' % (part.type, repr(part.params)))
>-        if part.type == 'b2x:changegroup':
>+        if part.type == 'changegroup':
>             version = part.params.get('version', '01')
>             cg = changegroup.packermap[version][1](part, 'UN')
>             chunkdata = cg.changelogheader()
>             chain = None
>             while True:
>@@ -2209,11 +2209,11 @@ def debuggetbundle(ui, repopath, bundlep
> 
>     bundletype = opts.get('type', 'bzip2').lower()
>     btypes = {'none': 'HG10UN',
>               'bzip2': 'HG10BZ',
>               'gzip': 'HG10GZ',
>-              'bundle2': 'HG2Y'}
>+              'bundle2': 'HG20'}
>     bundletype = btypes.get(bundletype)
>     if bundletype not in changegroup.bundletypes:
>         raise util.Abort(_('unknown bundle type specified with --type'))
>     changegroup.writebundle(ui, bundle, bundlepath, bundletype)
> 
>diff --git a/mercurial/exchange.py b/mercurial/exchange.py
>--- a/mercurial/exchange.py
>+++ b/mercurial/exchange.py
>@@ -47,19 +47,19 @@ def buildobsmarkerspart(bundler, markers
>         remoteversions = bundle2.obsmarkersversion(bundler.capabilities)
>         version = obsolete.commonversion(remoteversions)
>         if version is None:
>             raise ValueError('bundler do not support common obsmarker
>format')
>         stream = obsolete.encodemarkers(markers, True, version=version)
>-        return bundler.newpart('b2x:obsmarkers', data=stream)
>+        return bundler.newpart('obsmarkers', data=stream)
>     return None
> 
> def _canusebundle2(op):
>     """return true if a pull/push can use bundle2
> 
>     Feel free to nuke this function when we drop the experimental
>option"""
>     return (op.repo.ui.configbool('experimental', 'bundle2-exp', False)
>-            and op.remote.capable('bundle2-exp'))
>+            and op.remote.capable('bundle2'))
> 
> 
> class pushoperation(object):
>     """A object that represent a single push operation
> 
>@@ -457,14 +457,14 @@ def _pushb2ctx(pushop, bundler):
>         return
>     pushop.repo.prepushoutgoinghooks(pushop.repo,
>                                      pushop.remote,
>                                      pushop.outgoing)
>     if not pushop.force:
>-        bundler.newpart('b2x:check:heads', data=iter(pushop.remoteheads))
>+        bundler.newpart('check:heads', data=iter(pushop.remoteheads))
>     b2caps = bundle2.bundle2caps(pushop.remote)
>     version = None
>-    cgversions = b2caps.get('b2x:changegroup')
>+    cgversions = b2caps.get('changegroup')
>     if not cgversions:  # 3.1 and 3.2 ship with an empty value
>         cg = changegroup.getlocalchangegroupraw(pushop.repo, 'push',
>                                                 pushop.outgoing)
>     else:
>         cgversions = [v for v in cgversions if v in
>changegroup.packermap]
>@@ -472,11 +472,11 @@ def _pushb2ctx(pushop, bundler):
>             raise ValueError(_('no common changegroup version'))
>         version = max(cgversions)
>         cg = changegroup.getlocalchangegroupraw(pushop.repo, 'push',
>                                                 pushop.outgoing,
>                                                 version=version)
>-    cgpart = bundler.newpart('b2x:changegroup', data=cg)
>+    cgpart = bundler.newpart('changegroup', data=cg)
>     if version is not None:
>         cgpart.addparam('version', version)
>     def handlereply(op):
>         """extract addchangegroup returns from server reply"""
>         cgreplies = op.records.getreplies(cgpart.id)
>@@ -488,17 +488,17 @@ def _pushb2ctx(pushop, bundler):
> def _pushb2phases(pushop, bundler):
>     """handle phase push through bundle2"""
>     if 'phases' in pushop.stepsdone:
>         return
>     b2caps = bundle2.bundle2caps(pushop.remote)
>-    if not 'b2x:pushkey' in b2caps:
>+    if not 'pushkey' in b2caps:
>         return
>     pushop.stepsdone.add('phases')
>     part2node = []
>     enc = pushkey.encode
>     for newremotehead in pushop.outdatedphases:
>-        part = bundler.newpart('b2x:pushkey')
>+        part = bundler.newpart('pushkey')
>         part.addparam('namespace', enc('phases'))
>         part.addparam('key', enc(newremotehead.hex()))
>         part.addparam('old', enc(str(phases.draft)))
>         part.addparam('new', enc(str(phases.public)))
>         part2node.append((part.id, newremotehead))
>@@ -531,17 +531,17 @@ def _pushb2obsmarkers(pushop, bundler):
> def _pushb2bookmarks(pushop, bundler):
>     """handle phase push through bundle2"""
>     if 'bookmarks' in pushop.stepsdone:
>         return
>     b2caps = bundle2.bundle2caps(pushop.remote)
>-    if 'b2x:pushkey' not in b2caps:
>+    if 'pushkey' not in b2caps:
>         return
>     pushop.stepsdone.add('bookmarks')
>     part2book = []
>     enc = pushkey.encode
>     for book, old, new in pushop.outbookmarks:
>-        part = bundler.newpart('b2x:pushkey')
>+        part = bundler.newpart('pushkey')
>         part.addparam('namespace', enc('bookmarks'))
>         part.addparam('key', enc(book))
>         part.addparam('old', enc(old))
>         part.addparam('new', enc(new))
>         action = 'update'
>@@ -581,11 +581,11 @@ def _pushbundle2(pushop):
>                 and pushop.ui.configbool('experimental',
>'bundle2.pushback'))
> 
>     # create reply capability
>     capsblob = bundle2.encodecaps(bundle2.getrepocaps(pushop.repo,
>                  
>allowpushback=pushback))
>-    bundler.newpart('b2x:replycaps', data=capsblob)
>+    bundler.newpart('replycaps', data=capsblob)
>     replyhandlers = []
>     for partgenname in b2partsgenorder:
>         partgen = b2partsgenmapping[partgenname]
>         ret = partgen(pushop, bundler)
>         if callable(ret):
>@@ -973,11 +973,11 @@ def _pullbundle2(pullop):
>     pullop.stepsdone.add('changegroup')
> 
>     kwargs['common'] = pullop.common
>     kwargs['heads'] = pullop.heads or pullop.rheads
>     kwargs['cg'] = pullop.fetch
>-    if 'b2x:listkeys' in remotecaps:
>+    if 'listkeys' in remotecaps:
>         kwargs['listkeys'] = ['phase', 'bookmarks']
>     if not pullop.fetch:
>         pullop.repo.ui.status(_("no changes found\n"))
>         pullop.cgresult = 0
>     else:
>@@ -1126,11 +1126,11 @@ def _pullobsolete(pullop):
>             pullop.repo.invalidatevolatilesets()
>     return tr
> 
> def caps20to10(repo):
>     """return a set with appropriate options to use bundle20 during
>getbundle"""
>-    caps = set(['HG2Y'])
>+    caps = set(['HG20'])
>     capsblob = bundle2.encodecaps(bundle2.getrepocaps(repo))
>     caps.add('bundle2=' + urllib.quote(capsblob))
>     return caps
> 
> # List of names of steps to perform for a bundle2 for getbundle, order
>matters.
>@@ -1159,11 +1159,11 @@ def getbundle2partsgenerator(stepname):
> 
> def getbundle(repo, source, heads=None, common=None, bundlecaps=None,
>               **kwargs):
>     """return a full bundle (with potentially multiple kind of parts)
> 
>-    Could be a bundle HG10 or a bundle HG2Y depending on bundlecaps
>+    Could be a bundle HG10 or a bundle HG20 depending on bundlecaps
>     passed. For now, the bundle can contain only changegroup, but this
>will
>     changes when more part type will be available for bundle2.
> 
>     This is different from changegroup.getchangegroup that only returns
>an HG10
>     changegroup bundle. They may eventually get reunited in the future
>when we
>@@ -1210,11 +1210,11 @@ def _getbundlechangegrouppart(bundler, r
>     """add a changegroup part to the requested bundle"""
>     cg = None
>     if kwargs.get('cg', True):
>         # build changegroup bundle here.
>         version = None
>-        cgversions = b2caps.get('b2x:changegroup')
>+        cgversions = b2caps.get('changegroup')
>         if not cgversions:  # 3.1 and 3.2 ship with an empty value
>             cg = changegroup.getchangegroupraw(repo, source, heads=heads,
>                                                common=common,
>                                                bundlecaps=bundlecaps)
>         else:
>@@ -1226,21 +1226,21 @@ def _getbundlechangegrouppart(bundler, r
>                                                common=common,
>                                                bundlecaps=bundlecaps,
>                                                version=version)
> 
>     if cg:
>-        part = bundler.newpart('b2x:changegroup', data=cg)
>+        part = bundler.newpart('changegroup', data=cg)
>         if version is not None:
>             part.addparam('version', version)
> 
> @getbundle2partsgenerator('listkeys')
> def _getbundlelistkeysparts(bundler, repo, source, bundlecaps=None,
>                             b2caps=None, **kwargs):
>     """add parts containing listkeys namespaces to the requested
>bundle"""
>     listkeys = kwargs.get('listkeys', ())
>     for namespace in listkeys:
>-        part = bundler.newpart('b2x:listkeys')
>+        part = bundler.newpart('listkeys')
>         part.addparam('namespace', namespace)
>         keys = repo.listkeys(namespace).items()
>         part.data = pushkey.encodekeys(keys)
> 
> @getbundle2partsgenerator('obsmarkers')
>@@ -1286,11 +1286,11 @@ def unbundle(repo, cg, heads, source, ur
>         if util.safehasattr(cg, 'params'):
>             try:
>                 tr = repo.transaction('unbundle')
>                 tr.hookargs['source'] = source
>                 tr.hookargs['url'] = url
>-                tr.hookargs['bundle2-exp'] = '1'
>+                tr.hookargs['bundle2'] = '1'
>                 r = bundle2.processbundle(repo, cg, lambda: tr).reply
>                 p = lambda: tr.writepending() and repo.root or ""
>                 repo.hook('b2x-pretransactionclose', throw=True,
>pending=p,
>                           **tr.hookargs)
>                 hookargs = dict(tr.hookargs)
>diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
>--- a/mercurial/localrepo.py
>+++ b/mercurial/localrepo.py
>@@ -108,11 +108,11 @@ class localpeer(peer.peerrepository):
> 
>     def getbundle(self, source, heads=None, common=None, bundlecaps=None,
>                   **kwargs):
>         cg = exchange.getbundle(self._repo, source, heads=heads,
>                                 common=common, bundlecaps=bundlecaps,
>**kwargs)
>-        if bundlecaps is not None and 'HG2Y' in bundlecaps:
>+        if bundlecaps is not None and 'HG20' in bundlecaps:
>             # When requesting a bundle2, getbundle returns a stream to
>make the
>             # wire level function happier. We need to build a proper
>object
>             # from it in local peer.
>             cg = bundle2.getunbundler(self.ui, cg)
>         return cg
>@@ -315,11 +315,11 @@ class localrepository(object):
>         # bundle2 is not ready for prime time, drop it unless explicitly
>         # required by the tests (or some brave tester)
>         if self.ui.configbool('experimental', 'bundle2-exp', False):
>             caps = set(caps)
>             capsblob = bundle2.encodecaps(bundle2.getrepocaps(self))
>-            caps.add('bundle2-exp=' + urllib.quote(capsblob))
>+            caps.add('bundle2=' + urllib.quote(capsblob))
>         return caps
> 
>     def _applyrequirements(self, requirements):
>         self.requirements = requirements
>         self.svfs.options = dict((r, 1) for r in requirements
>diff --git a/mercurial/repair.py b/mercurial/repair.py
>--- a/mercurial/repair.py
>+++ b/mercurial/repair.py
>@@ -40,11 +40,11 @@ def _bundle(repo, bases, heads, node, su
>     allhashes = sorted(c.hex() for c in allcommits)
>     totalhash = util.sha1(''.join(allhashes)).hexdigest()
>     name = "%s/%s-%s-%s.hg" % (backupdir, short(node), totalhash[:8],
>suffix)
> 
>     if usebundle2:
>-        bundletype = "HG2Y"
>+        bundletype = "HG20"
>     elif compress:
>         bundletype = "HG10BZ"
>     else:
>         bundletype = "HG10UN"
>     return changegroup.writebundle(repo.ui, cg, name, bundletype, vfs)
>diff --git a/mercurial/wireproto.py b/mercurial/wireproto.py
>--- a/mercurial/wireproto.py
>+++ b/mercurial/wireproto.py
>@@ -615,11 +615,11 @@ def _capabilities(repo, proto):
>         # otherwise, add 'streamreqs' detailing our local revlog format
>         else:
>             caps.append('streamreqs=%s' % ','.join(requiredformats))
>     if repo.ui.configbool('experimental', 'bundle2-exp', False):
>         capsblob = bundle2.encodecaps(bundle2.getrepocaps(repo))
>-        caps.append('bundle2-exp=' + urllib.quote(capsblob))
>+        caps.append('bundle2=' + urllib.quote(capsblob))
>     caps.append('unbundle=%s' % ','.join(changegroupmod.bundlepriority))
>     caps.append('httpheader=1024')
>     return caps
> 
> # If you are writing an extension and consider wrapping this function.
>Wrap
>@@ -841,11 +841,11 @@ def unbundle(repo, proto, heads):
>         finally:
>             fp.close()
>             os.unlink(tempname)
>     except error.BundleValueError, exc:
>             bundler = bundle2.bundle20(repo.ui)
>-            errpart = bundler.newpart('b2x:error:unsupportedcontent')
>+            errpart = bundler.newpart('error:unsupportedcontent')
>             if exc.parttype is not None:
>                 errpart.addparam('parttype', exc.parttype)
>             if exc.params:
>                 errpart.addparam('params', '\0'.join(exc.params))
>             return streamres(bundler.getchunks())
>@@ -858,18 +858,18 @@ def unbundle(repo, proto, heads):
>             bundler = bundle2.bundle20(repo.ui)
>             manargs = [('message', str(inst))]
>             advargs = []
>             if inst.hint is not None:
>                 advargs.append(('hint', inst.hint))
>-            bundler.addpart(bundle2.bundlepart('b2x:error:abort',
>+            bundler.addpart(bundle2.bundlepart('error:abort',
>                                                manargs, advargs))
>             return streamres(bundler.getchunks())
>         else:
>             sys.stderr.write("abort: %s\n" % inst)
>             return pushres(0)
>     except error.PushRaced, exc:
>         if getattr(exc, 'duringunbundle2', False):
>             bundler = bundle2.bundle20(repo.ui)
>-            bundler.newpart('b2x:error:pushraced', [('message',
>str(exc))])
>+            bundler.newpart('error:pushraced', [('message', str(exc))])
>             return streamres(bundler.getchunks())
>         else:
>             return pusherr(str(exc))
>diff --git a/tests/test-bundle2-exchange.t b/tests/test-bundle2-exchange.t
>--- a/tests/test-bundle2-exchange.t
>+++ b/tests/test-bundle2-exchange.t
>@@ -218,11 +218,11 @@ push
>   wlock: free
>   pushkey: lock state after "bookmarks"
>   lock:  free
>   wlock: free
>   postclose-tip:eea13746799a public book_eea1
>-  txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2-EXP=1
>HG_NEW_OBSMARKERS=1 HG_NODE=eea13746799a9e0bfd88f29d3c2e9dc9389f524f
>HG_PHASES_MOVED=1 HG_SOURCE=push HG_TXNNAME=unbundle HG_URL=push
>+  txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_NEW_OBSMARKERS=1
>HG_NODE=eea13746799a9e0bfd88f29d3c2e9dc9389f524f HG_PHASES_MOVED=1
>HG_SOURCE=push HG_TXNNAME=unbundle HG_URL=push
>   remote: adding changesets
>   remote: adding manifests
>   remote: adding file changes
>   remote: added 1 changesets with 0 changes to 0 files (-1 heads)
>   remote: 1 new obsolescence markers
>@@ -308,11 +308,11 @@ push over ssh
>   remote: pre-close-tip:5fddd98957c8 draft book_5fdd
>   remote: pushkey: lock state after "bookmarks"
>   remote: lock:  free
>   remote: wlock: free
>   remote: postclose-tip:5fddd98957c8 draft book_5fdd
>-  remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2-EXP=1
>HG_NEW_OBSMARKERS=1 HG_NODE=5fddd98957c8a54a4d436dfe1da9d87f21a1b97b
>HG_SOURCE=serve HG_TXNNAME=unbundle HG_URL=remote:ssh:127.0.0.1
>+  remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1
>HG_NEW_OBSMARKERS=1 HG_NODE=5fddd98957c8a54a4d436dfe1da9d87f21a1b97b
>HG_SOURCE=serve HG_TXNNAME=unbundle HG_URL=remote:ssh:127.0.0.1
>   pre-close-tip:02de42196ebe draft book_02de
>   postclose-tip:02de42196ebe draft book_02de
>   txnclose hook: HG_SOURCE=push-response HG_TXNNAME=push-response
>   ssh://user@dummy/other HG_URL=ssh://user@dummy/other
>   $ hg -R other log -G
>@@ -424,11 +424,11 @@ Setting up
>   >         bundler.newpart('test:abort')
>   >     if reason == 'unknown':
>   >         bundler.newpart('test:unknown')
>   >     if reason == 'race':
>   >         # 20 Bytes of crap
>-  >         bundler.newpart('b2x:check:heads',
>data='01234567890123456789')
>+  >         bundler.newpart('check:heads', data='01234567890123456789')
>   > 
>   > @bundle2.parthandler("test:abort")
>   > def handleabort(op, part):
>   >     raise util.Abort('Abandon ship!', hint="don't panic")
>   > 
>diff --git a/tests/test-bundle2-format.t b/tests/test-bundle2-format.t
>--- a/tests/test-bundle2-format.t
>+++ b/tests/test-bundle2-format.t
>@@ -90,15 +90,15 @@ Create an extension to test bundle2 API
>   >         except ValueError, exc:
>   >             raise util.Abort('%s' % exc)
>   > 
>   >     if opts['reply']:
>   >         capsstring = 
>'ping-pong\nelephants=babar,celeste\ncity%3D%21=celeste%2Cville'
>-  >         bundler.newpart('b2x:replycaps', data=capsstring)
>+  >         bundler.newpart('replycaps', data=capsstring)
>   > 
>   >     if opts['pushrace']:
>   >         # also serve to test the assignement of data outside of init
>-  >         part = bundler.newpart('b2x:check:heads')
>+  >         part = bundler.newpart('check:heads')
>   >         part.data = '01234567890123456789'
>   > 
>   >     revs = opts['rev']
>   >     if 'rev' in opts:
>   >         revs = scmutil.revrange(repo, opts['rev'])
>@@ -107,11 +107,11 @@ Create an extension to test bundle2 API
>   >             bundled = repo.revs('%ld::%ld', revs, revs)
>   >             headmissing = [c.node() for c in repo.set('heads(%ld)', 
>revs)]
>   >             headcommon  = [c.node() for c in repo.set('parents(%ld) 
>- %ld', revs, revs)]
>   >             outgoing = discovery.outgoing(repo.changelog, 
>headcommon, headmissing)
>   >             cg = changegroup.getlocalchangegroup(repo, 
>'test:bundle2', outgoing, None)
>-  >             bundler.newpart('b2x:changegroup', data=cg.getchunks(),
>+  >             bundler.newpart('changegroup', data=cg.getchunks(),
>   >                             mandatory=False)
>   > 
>   >     if opts['parts']:
>   >        bundler.newpart('test:empty', mandatory=False)
>   >        # add a second one to make sure we handle multiple parts
>@@ -134,11 +134,11 @@ Create an extension to test bundle2 API
>   >        bundler.newpart('test:ping', mandatory=False)
>   >     if opts['genraise']:
>   >        def genraise():
>   >            yield 'first line\n'
>   >            raise RuntimeError('Someone set up us the bomb!')
>-  >        bundler.newpart('b2x:output', data=genraise(), 
>mandatory=False)
>+  >        bundler.newpart('output', data=genraise(), mandatory=False)
>   > 
>   >     if path is None:
>   >        file = sys.stdout
>   >     else:
>   >         file = open(path, 'wb')
>@@ -235,11 +235,11 @@ Empty bundle
> - no parts
> 
> Test bundling
> 
>   $ hg bundle2
>-  HG2Y\x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc)
>+  HG20\x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc)
> 
> Test unbundling
> 
>   $ hg bundle2 | hg statbundle2
>   options count: 0
>@@ -265,11 +265,11 @@ advisory parameters, no value
> Simplest possible parameters form
> 
> Test generation simple option
> 
>   $ hg bundle2 --param 'caution'
>-  HG2Y\x00\x00\x00\x07caution\x00\x00\x00\x00 (no-eol) (esc)
>+  HG20\x00\x00\x00\x07caution\x00\x00\x00\x00 (no-eol) (esc)
> 
> Test unbundling
> 
>   $ hg bundle2 --param 'caution' | hg statbundle2
>   options count: 1
>@@ -277,11 +277,11 @@ Test unbundling
>   parts count:   0
> 
> Test generation multiple option
> 
>   $ hg bundle2 --param 'caution' --param 'meal'
>-  HG2Y\x00\x00\x00\x0ccaution meal\x00\x00\x00\x00 (no-eol) (esc)
>+  HG20\x00\x00\x00\x0ccaution meal\x00\x00\x00\x00 (no-eol) (esc)
> 
> Test unbundling
> 
>   $ hg bundle2 --param 'caution' --param 'meal' | hg statbundle2
>   options count: 2
>@@ -293,11 +293,11 @@ advisory parameters, with value
> -------------------------------
> 
> Test generation
> 
>   $ hg bundle2 --param 'caution' --param 'meal=vegan' --param 'elephants'
>-  HG2Y\x00\x00\x00\x1ccaution meal=vegan elephants\x00\x00\x00\x00 
>(no-eol) (esc)
>+  HG20\x00\x00\x00\x1ccaution meal=vegan elephants\x00\x00\x00\x00 
>(no-eol) (esc)
> 
> Test unbundling
> 
>   $ hg bundle2 --param 'caution' --param 'meal=vegan' --param 
>'elephants' | hg statbundle2
>   options count: 3
>@@ -311,11 +311,11 @@ parameter with special char in value
> ---------------------------------------------------
> 
> Test generation
> 
>   $ hg bundle2 --param 'e|! 7/=babar%#==tutu' --param simple
>-  HG2Y\x00\x00\x00)e%7C%21%207/=babar%25%23%3D%3Dtutu 
>simple\x00\x00\x00\x00 (no-eol) (esc)
>+  HG20\x00\x00\x00)e%7C%21%207/=babar%25%23%3D%3Dtutu 
>simple\x00\x00\x00\x00 (no-eol) (esc)
> 
> Test unbundling
> 
>   $ hg bundle2 --param 'e|! 7/=babar%#==tutu' --param simple | hg 
>statbundle2
>   options count: 2
>@@ -335,24 +335,24 @@ Test debug output
> ---------------------------------------------------
> 
> bundling debug
> 
>   $ hg bundle2 --debug --param 'e|! 7/=babar%#==tutu' --param simple 
>../out.hg2
>-  start emission of HG2Y stream
>+  start emission of HG20 stream
>   bundle parameter: e%7C%21%207/=babar%25%23%3D%3Dtutu simple
>   start of parts
>   end of bundle
> 
> file content is ok
> 
>   $ cat ../out.hg2
>-  HG2Y\x00\x00\x00)e%7C%21%207/=babar%25%23%3D%3Dtutu 
>simple\x00\x00\x00\x00 (no-eol) (esc)
>+  HG20\x00\x00\x00)e%7C%21%207/=babar%25%23%3D%3Dtutu 
>simple\x00\x00\x00\x00 (no-eol) (esc)
> 
> unbundling debug
> 
>   $ hg statbundle2 --debug < ../out.hg2
>-  start processing of HG2Y stream
>+  start processing of HG20 stream
>   reading bundle2 stream parameters
>   ignoring unknown parameter 'e|! 7/'
>   ignoring unknown parameter 'simple'
>   options count: 2
>   - e|! 7/
>@@ -382,11 +382,11 @@ bad parameter name
> 
> Test part
> =================
> 
>   $ hg bundle2 --parts ../parts.hg2 --debug
>-  start emission of HG2Y stream
>+  start emission of HG20 stream
>   bundle parameter: 
>   start of parts
>   bundle part: "test:empty"
>   bundle part: "test:empty"
>   bundle part: "test:song"
>@@ -395,11 +395,11 @@ Test part
>   bundle part: "test:song"
>   bundle part: "test:ping"
>   end of bundle
> 
>   $ cat ../parts.hg2
>-  HG2Y\x00\x00\x00\x00\x00\x00\x00\x11 (esc)
>+  HG20\x00\x00\x00\x00\x00\x00\x00\x11 (esc)
>   test:empty\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11 
>(esc)
>   
>test:empty\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10	test:so
>ng\x00\x00\x00\x02\x00\x00\x00\x00\x00\xb2Patali Dirapata, Cromda Cromda 
>Ripalo, Pata Pata, Ko Ko Ko (esc)
>   Bokoro Dipoulito, Rondi Rondi Pepino, Pata Pata, Ko Ko Ko
>   Emana Karassoli, Loucra Loucra Ponponto, Pata Pata, Ko Ko 
>Ko.\x00\x00\x00\x00\x00\x00\x00\x16\x0ftest:debugreply\x00\x00\x00\x03\x00
>\x00\x00\x00\x00\x00\x00\x00\x00+	test:math\x00\x00\x00\x04\x02\x01\x02\x0
>4\x01\x04\x07\x03pi3.14e2.72cookingraw\x00\x00\x00\x0242\x00\x00\x00\x00\x
>00\x00\x00\x1d	test:song\x00\x00\x00\x05\x01\x00\x0b\x00randomparam\x00\x0
>0\x00\x00\x00\x00\x00\x10	test:ping\x00\x00\x00\x06\x00\x00\x00\x00\x00\x0
>0\x00\x00\x00\x00 (no-eol) (esc)
> 
>@@ -435,11 +435,11 @@ Test part
>       advisory: 0
>       payload: 0 bytes
>   parts count:   7
> 
>   $ hg statbundle2 --debug < ../parts.hg2
>-  start processing of HG2Y stream
>+  start processing of HG20 stream
>   reading bundle2 stream parameters
>   options count: 0
>   start extraction of bundle2 parts
>   part header size: 17
>   part type: "test:empty"
>@@ -514,11 +514,11 @@ Test actual unbundling of test part
> =======================================
> 
> Process the bundle
> 
>   $ hg unbundle2 --debug < ../parts.hg2
>-  start processing of HG2Y stream
>+  start processing of HG20 stream
>   reading bundle2 stream parameters
>   start extraction of bundle2 parts
>   part header size: 17
>   part type: "test:empty"
>   part id: "0"
>@@ -608,45 +608,42 @@ unbundle with a reply
>   3 total verses sung
> 
> The reply is a bundle
> 
>   $ cat ../reply.hg2
>-  HG2Y\x00\x00\x00\x00\x00\x00\x00\x1f (esc)
>-  
>b2x:output\x00\x00\x00\x00\x00\x01\x0b\x01in-reply-to3\x00\x00\x00\xd9The 
>choir starts singing: (esc)
>+  
>HG20\x00\x00\x00\x00\x00\x00\x00\x1b\x06output\x00\x00\x00\x00\x00\x01\x0b
>\x01in-reply-to3\x00\x00\x00\xd9The choir starts singing: (esc)
>       Patali Dirapata, Cromda Cromda Ripalo, Pata Pata, Ko Ko Ko
>       Bokoro Dipoulito, Rondi Rondi Pepino, Pata Pata, Ko Ko Ko
>       Emana Karassoli, Loucra Loucra Ponponto, Pata Pata, Ko Ko Ko.
>-  \x00\x00\x00\x00\x00\x00\x00\x1f (esc)
>-  
>b2x:output\x00\x00\x00\x01\x00\x01\x0b\x01in-reply-to4\x00\x00\x00\xc9debu
>greply: capabilities: (esc)
>+  
>\x00\x00\x00\x00\x00\x00\x00\x1b\x06output\x00\x00\x00\x01\x00\x01\x0b\x01
>in-reply-to4\x00\x00\x00\xc9debugreply: capabilities: (esc)
>   debugreply:     'city=!'
>   debugreply:         'celeste,ville'
>   debugreply:     'elephants'
>   debugreply:         'babar'
>   debugreply:         'celeste'
>   debugreply:     'ping-pong'
>-  
>\x00\x00\x00\x00\x00\x00\x00\x1e	test:pong\x00\x00\x00\x02\x01\x00\x0b\x01
>in-reply-to7\x00\x00\x00\x00\x00\x00\x00\x1f (esc)
>-  
>b2x:output\x00\x00\x00\x03\x00\x01\x0b\x01in-reply-to7\x00\x00\x00=receive
>d ping request (id 7) (esc)
>+  
>\x00\x00\x00\x00\x00\x00\x00\x1e	test:pong\x00\x00\x00\x02\x01\x00\x0b\x01
>in-reply-to7\x00\x00\x00\x00\x00\x00\x00\x1b\x06output\x00\x00\x00\x03\x00
>\x01\x0b\x01in-reply-to7\x00\x00\x00=received ping request (id 7) (esc)
>   replying to ping request (id 7)
>   \x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc)
> 
> The reply is valid
> 
>   $ hg statbundle2 < ../reply.hg2
>   options count: 0
>-    :b2x:output:
>+    :output:
>       mandatory: 0
>       advisory: 1
>       payload: 217 bytes
>-    :b2x:output:
>+    :output:
>       mandatory: 0
>       advisory: 1
>       payload: 201 bytes
>     :test:pong:
>       mandatory: 1
>       advisory: 0
>       payload: 0 bytes
>-    :b2x:output:
>+    :output:
>       mandatory: 0
>       advisory: 1
>       payload: 61 bytes
>   parts count:   4
> 
>@@ -712,14 +709,14 @@ Support for changegroup
>   list of changesets:
>   32af7686d403cf45b5d95f2d70cebea587ac806a
>   9520eea781bcca16c1e15acc0ba14335a0e8e5ba
>   eea13746799a9e0bfd88f29d3c2e9dc9389f524f
>   02de42196ebee42ef284b6780a87cdc96e8eaab6
>-  start emission of HG2Y stream
>+  start emission of HG20 stream
>   bundle parameter: 
>   start of parts
>-  bundle part: "b2x:changegroup"
>+  bundle part: "changegroup"
>   bundling: 1/4 changesets (25.00%)
>   bundling: 2/4 changesets (50.00%)
>   bundling: 3/4 changesets (75.00%)
>   bundling: 4/4 changesets (100.00%)
>   bundling: 1/4 manifests (25.00%)
>@@ -730,11 +727,11 @@ Support for changegroup
>   bundling: E 2/3 files (66.67%)
>   bundling: H 3/3 files (100.00%)
>   end of bundle
> 
>   $ cat ../rev.hg2
>-  
>HG2Y\x00\x00\x00\x00\x00\x00\x00\x16\x0fb2x:changegroup\x00\x00\x00\x00\x0
>0\x00\x00\x00\x06\x13\x00\x00\x00\xa42\xafv\x86\xd4\x03\xcfE\xb5\xd9_-p\xc
>e\xbe\xa5\x87\xac\x80j_\xdd\xd9\x89W\xc8\xa5JMCm\xfe\x1d\xa9\xd8\x7f!\xa1\
>xb9{\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
>00\x00\x002\xafv\x86\xd4\x03\xcfE\xb5\xd9_-p\xce\xbe\xa5\x87\xac\x80j\x00\
>x00\x00\x00\x00\x00\x00)\x00\x00\x00)6e1f4c47ecb533ffd0c8e52cdc88afb6cd39e
>20c (esc)
>+  
>HG20\x00\x00\x00\x00\x00\x00\x00\x12\x0bchangegroup\x00\x00\x00\x00\x00\x0
>0\x00\x00\x06\x13\x00\x00\x00\xa42\xafv\x86\xd4\x03\xcfE\xb5\xd9_-p\xce\xb
>e\xa5\x87\xac\x80j_\xdd\xd9\x89W\xc8\xa5JMCm\xfe\x1d\xa9\xd8\x7f!\xa1\xb9{
>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
>00\x002\xafv\x86\xd4\x03\xcfE\xb5\xd9_-p\xce\xbe\xa5\x87\xac\x80j\x00\x00\
>x00\x00\x00\x00\x00)\x00\x00\x00)6e1f4c47ecb533ffd0c8e52cdc88afb6cd39e20c 
>(esc)
>   \x00\x00\x00f\x00\x00\x00h\x00\x00\x00\x02D (esc)
>   \x00\x00\x00i\x00\x00\x00j\x00\x00\x00\x01D\x00\x00\x00\xa4\x95 
>\xee\xa7\x81\xbc\xca\x16\xc1\xe1Z\xcc\x0b\xa1C5\xa0\xe8\xe5\xba\xcd\x01\x0
>b\x8c\xd9\x98\xf3\x98\x1aZ\x81\x15\xf9O\x8d\xa4\xabP`\x89\x00\x00\x00\x00\
>x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95 
>\xee\xa7\x81\xbc\xca\x16\xc1\xe1Z\xcc\x0b\xa1C5\xa0\xe8\xe5\xba\x00\x00\x0
>0\x00\x00\x00\x00)\x00\x00\x00)4dece9c826f69490507b98c6383a3009b295837d 
>(esc)
>   \x00\x00\x00f\x00\x00\x00h\x00\x00\x00\x02E (esc)
>   
>\x00\x00\x00i\x00\x00\x00j\x00\x00\x00\x01E\x00\x00\x00\xa2\xee\xa17Fy\x9a
>\x9e\x0b\xfd\x88\xf2\x9d<.\x9d\xc98\x9fRO$\xb68|\x8c\x8c\xae7\x17\x88\x80\
>xf3\xfa\x95\xde\xd3\xcb\x1c\xf7\x85\x95 
>\xee\xa7\x81\xbc\xca\x16\xc1\xe1Z\xcc\x0b\xa1C5\xa0\xe8\xe5\xba\xee\xa17Fy
>\x9a\x9e\x0b\xfd\x88\xf2\x9d<.\x9d\xc98\x9fRO\x00\x00\x00\x00\x00\x00\x00)
>\x00\x00\x00)365b93d57fdf4814e2b5911d6bacff2b12014441 (esc)
>   
>\x00\x00\x00f\x00\x00\x00h\x00\x00\x00\x00\x00\x00\x00i\x00\x00\x00j\x00\x
>00\x00\x01G\x00\x00\x00\xa4\x02\xdeB\x19n\xbe\xe4.\xf2\x84\xb6x (esc)
>@@ -755,11 +752,11 @@ Support for changegroup
>   
>\x87\xcd\xc9n\x8e\xaa\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02H
> (esc)
>   \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 
>(no-eol) (esc)
> 
>   $ hg debugbundle ../rev.hg2
>   Stream params: {}
>-  b2x:changegroup -- '{}'
>+  changegroup -- '{}'
>       32af7686d403cf45b5d95f2d70cebea587ac806a
>       9520eea781bcca16c1e15acc0ba14335a0e8e5ba
>       eea13746799a9e0bfd88f29d3c2e9dc9389f524f
>       02de42196ebee42ef284b6780a87cdc96e8eaab6
>   $ hg unbundle ../rev.hg2
>@@ -774,12 +771,11 @@ with reply
>   $ hg unbundle2 ../rev-reply.hg2 < ../rev-rr.hg2
>   0 unread bytes
>   addchangegroup return: 1
> 
>   $ cat ../rev-reply.hg2
>-  
>HG2Y\x00\x00\x00\x00\x00\x00\x003\x15b2x:reply:changegroup\x00\x00\x00\x00
>\x00\x02\x0b\x01\x06\x01in-reply-to1return1\x00\x00\x00\x00\x00\x00\x00\x1
>f (esc)
>-  
>b2x:output\x00\x00\x00\x01\x00\x01\x0b\x01in-reply-to1\x00\x00\x00dadding 
>changesets (esc)
>+  
>HG20\x00\x00\x00\x00\x00\x00\x00/\x11reply:changegroup\x00\x00\x00\x00\x00
>\x02\x0b\x01\x06\x01in-reply-to1return1\x00\x00\x00\x00\x00\x00\x00\x1b\x0
>6output\x00\x00\x00\x01\x00\x01\x0b\x01in-reply-to1\x00\x00\x00dadding 
>changesets (esc)
>   adding manifests
>   adding file changes
>   added 0 changesets with 0 changes to 3 files
>   \x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc)
> 
>@@ -791,12 +787,12 @@ Check handling of exception during gener
>   [255]
> 
> Should still be a valid bundle
> 
>   $ cat ../genfailed.hg2
>-  HG2Y\x00\x00\x00\x00\x00\x00\x00\x11 (esc)
>-  
>b2x:output\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00L\x0fb2x:err
>or:abort\x00\x00\x00\x00\x01\x00\x07-messageunexpected error: Someone set 
>up us the bomb!\x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc)
>+  HG20\x00\x00\x00\x00\x00\x00\x00\r (no-eol) (esc)
>+  
>\x06output\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00H\x0berror:a
>bort\x00\x00\x00\x00\x01\x00\x07-messageunexpected error: Someone set up 
>us the bomb!\x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc)
> 
> And its handling on the other size raise a clean exception
> 
>   $ cat ../genfailed.hg2 | hg unbundle2
>   0 unread bytes
>diff --git a/tests/test-bundle2-multiple-changegroups.t 
>b/tests/test-bundle2-multiple-changegroups.t
>--- a/tests/test-bundle2-multiple-changegroups.t
>+++ b/tests/test-bundle2-multiple-changegroups.t
>@@ -12,17 +12,17 @@ Create an extension to test bundle2 with
>   >     # changegroup part we are being requested. Use the parent of 
>each head
>   >     # in 'heads' as intermediate heads for the first changegroup.
>   >     intermediates = [repo[r].p1().node() for r in heads]
>   >     cg = changegroup.getchangegroup(repo, source, 
>heads=intermediates,
>   >                                      common=common, 
>bundlecaps=bundlecaps)
>-  >     bundler.newpart('b2x:output', data='changegroup1')
>-  >     bundler.newpart('b2x:changegroup', data=cg.getchunks())
>+  >     bundler.newpart('output', data='changegroup1')
>+  >     bundler.newpart('changegroup', data=cg.getchunks())
>   >     cg = changegroup.getchangegroup(repo, source, heads=heads,
>   >                                      common=common + intermediates,
>   >                                      bundlecaps=bundlecaps)
>-  >     bundler.newpart('b2x:output', data='changegroup2')
>-  >     bundler.newpart('b2x:changegroup', data=cg.getchunks())
>+  >     bundler.newpart('output', data='changegroup2')
>+  >     bundler.newpart('changegroup', data=cg.getchunks())
>   > 
>   > def _pull(repo, *args, **kwargs):
>   >   pullop = _orig_pull(repo, *args, **kwargs)
>   >   repo.ui.write('pullop.cgresult is %d\n' % pullop.cgresult)
>   >   return pullop
>diff --git a/tests/test-bundle2-pushback.t b/tests/test-bundle2-pushback.t
>--- a/tests/test-bundle2-pushback.t
>+++ b/tests/test-bundle2-pushback.t
>@@ -4,25 +4,25 @@
>   > parts, so they must be created by extensions.
>   > """
>   > from mercurial import bundle2, pushkey, exchange, util
>   > def _newhandlechangegroup(op, inpart):
>   >     """This function wraps the changegroup part handler for 
>getbundle.
>-  >     It issues an additional b2x:pushkey part to send a new
>+  >     It issues an additional pushkey part to send a new
>   >     bookmark back to the client"""
>   >     result = bundle2.handlechangegroup(op, inpart)
>-  >     if 'b2x:pushback' in op.reply.capabilities:
>+  >     if 'pushback' in op.reply.capabilities:
>   >         params = {'namespace': 'bookmarks',
>   >                   'key': 'new-server-mark',
>   >                   'old': '',
>   >                   'new': 'tip'}
>   >         encodedparams = [(k, pushkey.encode(v)) for (k,v) in 
>params.items()]
>-  >         op.reply.newpart('b2x:pushkey', 
>mandatoryparams=encodedparams)
>+  >         op.reply.newpart('pushkey', mandatoryparams=encodedparams)
>   >     else:
>-  >         op.reply.newpart('b2x:output', data='pushback not enabled')
>+  >         op.reply.newpart('output', data='pushback not enabled')
>   >     return result
>   > _newhandlechangegroup.params = bundle2.handlechangegroup.params
>-  > bundle2.parthandlermapping['b2x:changegroup'] = _newhandlechangegroup
>+  > bundle2.parthandlermapping['changegroup'] = _newhandlechangegroup
>   > EOF
> 
>   $ cat >> $HGRCPATH <<EOF
>   > [ui]
>   > ssh = python "$TESTDIR/dummyssh"
>diff --git a/tests/test-bundle2-remote-changegroup.t 
>b/tests/test-bundle2-remote-changegroup.t
>--- a/tests/test-bundle2-remote-changegroup.t
>+++ b/tests/test-bundle2-remote-changegroup.t
>@@ -33,11 +33,11 @@ Create an extension to test bundle2 remo
>   >           evaluated with eval, and is expected to be a dict.
>   >     """
>   >     def newpart(name, data=''):
>   >         """wrapper around bundler.newpart adding an extra part 
>making the
>   >         client output information about each processed part"""
>-  >         bundler.newpart('b2x:output', data=name)
>+  >         bundler.newpart('output', data=name)
>   >         part = bundler.newpart(name, data=data)
>   >         return part
>   > 
>   >     for line in open(repo.join('bundle2maker'), 'r'):
>   >         line = line.strip()
>@@ -48,26 +48,26 @@ Create an extension to test bundle2 remo
>   >         if verb == 'remote-changegroup':
>   >            url, file = args.split()
>   >            bundledata = open(file, 'rb').read()
>   >            digest = util.digester.preferred(b2caps['digests'])
>   >            d = util.digester([digest], bundledata)
>-  >            part = newpart('b2x:remote-changegroup')
>+  >            part = newpart('remote-changegroup')
>   >            part.addparam('url', url)
>   >            part.addparam('size', str(len(bundledata)))
>   >            part.addparam('digests', digest)
>   >            part.addparam('digest:%s' % digest, d[digest])
>   >         elif verb == 'raw-remote-changegroup':
>-  >            part = newpart('b2x:remote-changegroup')
>+  >            part = newpart('remote-changegroup')
>   >            for k, v in eval(args).items():
>   >                part.addparam(k, str(v))
>   >         elif verb == 'changegroup':
>   >             _common, heads = args.split()
>   >             common.extend(repo.lookup(r) for r in repo.revs(_common))
>   >             heads = [repo.lookup(r) for r in repo.revs(heads)]
>   >             cg = changegroup.getchangegroup(repo, 'changegroup',
>   >                 heads=heads, common=common)
>-  >             newpart('b2x:changegroup', cg.getchunks())
>+  >             newpart('changegroup', cg.getchunks())
>   >         else:
>   >             raise Exception('unknown verb')
>   > 
>   > exchange.getbundle2partsmapping['changegroup'] = 
>_getbundlechangegrouppart
>   > EOF
>@@ -135,11 +135,11 @@ Test a pull with an remote-changegroup
>   updating to branch default
>   4 files updated, 0 files merged, 0 files removed, 0 files unresolved
>   $ hg pull -R clone ssh://user@dummy/repo
>   pulling from ssh://user@dummy/repo
>   searching for changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 3 changesets with 2 changes to 2 files (+1 heads)
>   (run 'hg heads .' to see heads, 'hg merge' to merge)
>@@ -178,16 +178,16 @@ Test a pull with an remote-changegroup a
>   updating to branch default
>   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
>   $ hg pull -R clone ssh://user@dummy/repo
>   pulling from ssh://user@dummy/repo
>   searching for changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 2 changesets with 2 changes to 2 files (+1 heads)
>-  remote: b2x:changegroup
>+  remote: changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 3 changesets with 2 changes to 2 files (+1 heads)
>   (run 'hg heads' to see heads, 'hg merge' to merge)
>@@ -226,16 +226,16 @@ Test a pull with a changegroup followed 
>   updating to branch default
>   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
>   $ hg pull -R clone ssh://user@dummy/repo
>   pulling from ssh://user@dummy/repo
>   searching for changes
>-  remote: b2x:changegroup
>+  remote: changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 2 changesets with 2 changes to 2 files (+1 heads)
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 3 changesets with 2 changes to 2 files (+1 heads)
>   (run 'hg heads' to see heads, 'hg merge' to merge)
>@@ -277,21 +277,21 @@ Test a pull with two remote-changegroups
>   updating to branch default
>   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
>   $ hg pull -R clone ssh://user@dummy/repo
>   pulling from ssh://user@dummy/repo
>   searching for changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 2 changesets with 2 changes to 2 files (+1 heads)
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 2 changesets with 1 changes to 1 files
>-  remote: b2x:changegroup
>+  remote: changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 1 changesets with 1 changes to 1 files (+1 heads)
>   (run 'hg heads' to see heads, 'hg merge' to merge)
>@@ -322,11 +322,11 @@ Hash digest tests
>   $ cat > repo/.hg/bundle2maker << EOF
>   > raw-remote-changegroup {'url': 
>'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'sha1', 
>'digest:sha1': '2c880cfec23cff7d8f80c2f12958d1563cbdaba6'}
>   > EOF
>   $ hg clone ssh://user@dummy/repo clone
>   requesting all changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 8 changesets with 7 changes to 7 files (+2 heads)
>   updating to branch default
>@@ -336,11 +336,11 @@ Hash digest tests
>   $ cat > repo/.hg/bundle2maker << EOF
>   > raw-remote-changegroup {'url': 
>'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'md5', 
>'digest:md5': 'e22172c2907ef88794b7bea6642c2394'}
>   > EOF
>   $ hg clone ssh://user@dummy/repo clone
>   requesting all changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 8 changesets with 7 changes to 7 files (+2 heads)
>   updating to branch default
>@@ -352,11 +352,11 @@ Hash digest mismatch throws an error
>   $ cat > repo/.hg/bundle2maker << EOF
>   > raw-remote-changegroup {'url': 
>'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'sha1', 
>'digest:sha1': '0' * 40}
>   > EOF
>   $ hg clone ssh://user@dummy/repo clone
>   requesting all changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 8 changesets with 7 changes to 7 files (+2 heads)
>   transaction abort!
>@@ -370,11 +370,11 @@ Multiple hash digests can be given
>   $ cat > repo/.hg/bundle2maker << EOF
>   > raw-remote-changegroup {'url': 
>'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'md5 
>sha1', 'digest:md5': 'e22172c2907ef88794b7bea6642c2394', 'digest:sha1': 
>'2c880cfec23cff7d8f80c2f12958d1563cbdaba6'}
>   > EOF
>   $ hg clone ssh://user@dummy/repo clone
>   requesting all changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 8 changesets with 7 changes to 7 files (+2 heads)
>   updating to branch default
>@@ -386,11 +386,11 @@ If either of the multiple hash digests m
>   $ cat > repo/.hg/bundle2maker << EOF
>   > raw-remote-changegroup {'url': 
>'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'md5 
>sha1', 'digest:md5': '0' * 32, 'digest:sha1': 
>'2c880cfec23cff7d8f80c2f12958d1563cbdaba6'}
>   > EOF
>   $ hg clone ssh://user@dummy/repo clone
>   requesting all changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 8 changesets with 7 changes to 7 files (+2 heads)
>   transaction abort!
>@@ -402,11 +402,11 @@ If either of the multiple hash digests m
>   $ cat > repo/.hg/bundle2maker << EOF
>   > raw-remote-changegroup {'url': 
>'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'md5 
>sha1', 'digest:md5': 'e22172c2907ef88794b7bea6642c2394', 'digest:sha1': 
>'0' * 40}
>   > EOF
>   $ hg clone ssh://user@dummy/repo clone
>   requesting all changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 8 changesets with 7 changes to 7 files (+2 heads)
>   transaction abort!
>@@ -431,16 +431,16 @@ Corruption tests
>   > changegroup 0:6 7
>   > EOF
>   $ hg pull -R clone ssh://user@dummy/repo
>   pulling from ssh://user@dummy/repo
>   searching for changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 2 changesets with 2 changes to 2 files (+1 heads)
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 2 changesets with 1 changes to 1 files
>   transaction abort!
>@@ -465,11 +465,11 @@ No params
>   > raw-remote-changegroup {}
>   > EOF
>   $ hg pull -R clone ssh://user@dummy/repo
>   pulling from ssh://user@dummy/repo
>   searching for changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   abort: remote-changegroup: missing "url" param
>   [255]
> 
> Missing size
> 
>@@ -477,11 +477,11 @@ Missing size
>   > raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle4.hg'}
>   > EOF
>   $ hg pull -R clone ssh://user@dummy/repo
>   pulling from ssh://user@dummy/repo
>   searching for changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   abort: remote-changegroup: missing "size" param
>   [255]
> 
> Invalid size
> 
>@@ -489,11 +489,11 @@ Invalid size
>   > raw-remote-changegroup {'url': 
>'http://localhost:$HGPORT/bundle4.hg', 'size': 'foo'}
>   > EOF
>   $ hg pull -R clone ssh://user@dummy/repo
>   pulling from ssh://user@dummy/repo
>   searching for changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   abort: remote-changegroup: invalid value for param "size"
>   [255]
> 
> Size mismatch
> 
>@@ -501,11 +501,11 @@ Size mismatch
>   > raw-remote-changegroup {'url': 
>'http://localhost:$HGPORT/bundle4.hg', 'size': 42}
>   > EOF
>   $ hg pull -R clone ssh://user@dummy/repo
>   pulling from ssh://user@dummy/repo
>   searching for changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   adding changesets
>   adding manifests
>   adding file changes
>   added 2 changesets with 2 changes to 2 files (+1 heads)
>   transaction abort!
>@@ -520,23 +520,23 @@ Unknown digest
>   > raw-remote-changegroup {'url': 
>'http://localhost:$HGPORT/bundle4.hg', 'size': 581, 'digests': 'foo', 
>'digest:foo': 'bar'}
>   > EOF
>   $ hg pull -R clone ssh://user@dummy/repo
>   pulling from ssh://user@dummy/repo
>   searching for changes
>-  remote: b2x:remote-changegroup
>-  abort: missing support for b2x:remote-changegroup - digest:foo
>+  remote: remote-changegroup
>+  abort: missing support for remote-changegroup - digest:foo
>   [255]
> 
> Missing digest
> 
>   $ cat > repo/.hg/bundle2maker << EOF
>   > raw-remote-changegroup {'url': 
>'http://localhost:$HGPORT/bundle4.hg', 'size': 581, 'digests': 'sha1'}
>   > EOF
>   $ hg pull -R clone ssh://user@dummy/repo
>   pulling from ssh://user@dummy/repo
>   searching for changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   abort: remote-changegroup: missing "digest:sha1" param
>   [255]
> 
> Not an HTTP url
> 
>@@ -544,11 +544,11 @@ Not an HTTP url
>   > raw-remote-changegroup {'url': 'ssh://localhost:$HGPORT/bundle4.hg', 
>'size': 581}
>   > EOF
>   $ hg pull -R clone ssh://user@dummy/repo
>   pulling from ssh://user@dummy/repo
>   searching for changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   abort: remote-changegroup does not support ssh urls
>   [255]
> 
> Not a bundle
> 
>@@ -559,26 +559,26 @@ Not a bundle
>   > remote-changegroup http://localhost:$HGPORT/notbundle.hg notbundle.hg
>   > EOF
>   $ hg pull -R clone ssh://user@dummy/repo
>   pulling from ssh://user@dummy/repo
>   searching for changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   abort: http://localhost:$HGPORT/notbundle.hg: not a Mercurial bundle
>   [255]
> 
> Not a bundle 1.0
> 
>   $ cat > notbundle10.hg << EOF
>-  > HG2Y
>+  > HG20
>   > EOF
>   $ cat > repo/.hg/bundle2maker << EOF
>   > remote-changegroup http://localhost:$HGPORT/notbundle10.hg 
>notbundle10.hg
>   > EOF
>   $ hg pull -R clone ssh://user@dummy/repo
>   pulling from ssh://user@dummy/repo
>   searching for changes
>-  remote: b2x:remote-changegroup
>+  remote: remote-changegroup
>   abort: http://localhost:$HGPORT/notbundle10.hg: not a bundle version 
>1.0
>   [255]
> 
>   $ hg -R clone log -G
>   @  2:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits at gmail.com>  C
>diff --git a/tests/test-getbundle.t b/tests/test-getbundle.t
>--- a/tests/test-getbundle.t
>+++ b/tests/test-getbundle.t
>@@ -168,11 +168,11 @@ Get branch and merge:
> = Test bundle2 =
> 
>   $ hg debuggetbundle repo bundle -t bundle2
>   $ hg debugbundle bundle
>   Stream params: {}
>-  b2x:changegroup -- "{'version': '01'}"
>+  changegroup -- "{'version': '01'}"
>       7704483d56b2a7b5db54dcee7c62378ac629b348
>       29a4d1f17bd3f0779ca0525bebb1cfb51067c738
>       713346a995c363120712aed1aee7e04afd867638
>       d5f6e1ea452285324836a49d7d3c2a63cfed1d31
>       ff42371d57168345fdf1a3aac66a51f6a45d41d2
>diff --git a/tests/test-strip.t b/tests/test-strip.t
>--- a/tests/test-strip.t
>+++ b/tests/test-strip.t
>@@ -216,11 +216,11 @@
>   date:        Thu Jan 01 00:00:00 1970 +0000
>   summary:     b
>   
>   $ hg debugbundle .hg/strip-backup/*
>   Stream params: {}
>-  b2x:changegroup -- "{'version': '02'}"
>+  changegroup -- "{'version': '02'}"
>       264128213d290d868c54642d13aeaa3675551a78
>   $ hg incoming .hg/strip-backup/*
>   comparing with .hg/strip-backup/264128213d29-0b39d6bf-backup.hg
>   searching for changes
>   changeset:   4:264128213d29
>@@ -242,11 +242,11 @@
>   date:        Thu Jan 01 00:00:00 1970 +0000
>   summary:     b
>   
>   $ hg debugbundle .hg/strip-backup/*
>   Stream params: {}
>-  b2x:changegroup -- "{'version': '02'}"
>+  changegroup -- "{'version': '02'}"
>       264128213d290d868c54642d13aeaa3675551a78
>   $ hg pull .hg/strip-backup/*
>   pulling from .hg/strip-backup/264128213d29-0b39d6bf-backup.hg
>   searching for changes
>   adding changesets
>_______________________________________________
>Mercurial-devel mailing list
>Mercurial-devel at selenic.com
>http://selenic.com/mailman/listinfo/mercurial-devel



More information about the Mercurial-devel mailing list