diff --git a/hgext/narrow/narrowbundle2.py b/hgext/narrow/narrowbundle2.py --- a/hgext/narrow/narrowbundle2.py +++ b/hgext/narrow/narrowbundle2.py @@ -32,6 +32,7 @@ ) NARROWCAP = 'narrow' +ELLIPSESCAP = 'ellipses' _NARROWACL_SECTION = 'narrowhgacl' _CHANGESPECPART = NARROWCAP + ':changespec' _SPECPART = NARROWCAP + ':spec' diff --git a/hgext/narrow/narrowwirepeer.py b/hgext/narrow/narrowwirepeer.py --- a/hgext/narrow/narrowwirepeer.py +++ b/hgext/narrow/narrowwirepeer.py @@ -14,8 +14,11 @@ hg, narrowspec, node, + wireprotov1server, ) +from . import narrowbundle2 + def uisetup(): def peersetup(ui, peer): # We must set up the expansion before reposetup below, since it's used @@ -38,6 +41,16 @@ peer.__class__ = expandingpeer hg.wirepeersetupfuncs.append(peersetup) + extensions.wrapfunction(wireprotov1server, '_capabilities', addnarrowcap) + +def addnarrowcap(orig, repo, proto): + """add the narrow capability to the server""" + caps = orig(repo, proto) + caps.append(narrowbundle2.NARROWCAP) + if repo.ui.configbool('experimental', 'narrowservebrokenellipses'): + caps.append(narrowbundle2.ELLIPSESCAP) + return caps + def reposetup(repo): def wirereposetup(ui, peer): def wrapped(orig, cmd, *args, **kwargs): diff --git a/tests/test-narrow-clone-non-narrow-server.t b/tests/test-narrow-clone-non-narrow-server.t --- a/tests/test-narrow-clone-non-narrow-server.t +++ b/tests/test-narrow-clone-non-narrow-server.t @@ -33,6 +33,7 @@ $ echo hello | hg -R . serve --stdio | \ > $PYTHON unquote.py | grep narrow narrow=v0 + rev-branch-cache changegroupsubset getbundle known lookup narrow protocaps pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash $ cd ..