diff -r 77c9ee77687c -r 72b0982cd509 mercurial/debugcommands.py --- a/mercurial/debugcommands.py Wed Apr 11 18:15:51 2018 -0700 +++ b/mercurial/debugcommands.py Thu Apr 12 12:33:07 2018 -0700 @@ -83,7 +83,6 @@ vfs as vfsmod, wireprotoframing, wireprotoserver, - wireprototypes, ) from .utils import ( dateutil, @@ -2911,9 +2910,19 @@ if opts['peer'] == 'http2': ui.write(_('creating http peer for wire protocol version 2\n')) - peer = httppeer.httpv2peer( - ui, path, 'api/%s' % wireprototypes.HTTP_WIREPROTO_V2, - opener, httppeer.urlreq.request, {}) + # We go through makepeer() because we need an API descriptor for + # the peer instance to be useful. + with ui.configoverride({ + ('experimental', 'httppeer.advertise-v2'): True}): + peer = httppeer.makepeer(ui, path, opener=opener) + + if not isinstance(peer, httppeer.httpv2peer): + raise error.Abort(_('could not instantiate HTTP peer for ' + 'wire protocol version 2'), + hint=_('the server may not have the feature ' + 'enabled or is not allowing this ' + 'client version')) + elif opts['peer'] == 'raw': ui.write(_('using raw connection to peer\n')) peer = None