narrow: move requirement constant to core
My short-term goal is to move narrowrepo.narrowmatch() onto localrepo
and this is a necessary step for that.
I put the constant in changegroup.py, unlike REVLOGV2_REQUIREMENT,
which is in localrepo.py, since we'll need to access it from the
changegroup module eventually.
Differential Revision: https://phab.mercurial-scm.org/D2487
--- a/hgext/narrow/__init__.py Wed Feb 21 14:36:42 2018 +0530
+++ b/hgext/narrow/__init__.py Wed Feb 28 10:21:43 2018 -0800
@@ -15,6 +15,7 @@
testedwith = 'ships-with-hg-core'
from mercurial import (
+ changegroup,
extensions,
hg,
localrepo,
@@ -55,7 +56,7 @@
# Export the commands table for Mercurial to see.
cmdtable = narrowcommands.table
-localrepo.localrepository._basesupported.add(narrowrepo.REQUIREMENT)
+localrepo.localrepository._basesupported.add(changegroup.NARROW_REQUIREMENT)
def uisetup(ui):
"""Wraps user-facing mercurial commands with narrow-aware versions."""
@@ -71,7 +72,7 @@
if not isinstance(repo, localrepo.localrepository):
return
- if narrowrepo.REQUIREMENT in repo.requirements:
+ if changegroup.NARROW_REQUIREMENT in repo.requirements:
narrowrepo.wraprepo(repo, True)
narrowcopies.setup(repo)
narrowdirstate.setup(repo)
--- a/hgext/narrow/narrowbundle2.py Wed Feb 21 14:36:42 2018 +0530
+++ b/hgext/narrow/narrowbundle2.py Wed Feb 28 10:21:43 2018 -0800
@@ -30,10 +30,6 @@
wireproto,
)
-from . import (
- narrowrepo,
-)
-
NARROWCAP = 'narrow'
_NARROWACL_SECTION = 'narrowhgacl'
_CHANGESPECPART = NARROWCAP + ':changespec'
@@ -366,8 +362,8 @@
includepats = set(inpart.params.get(_SPECPART_INCLUDE, '').splitlines())
excludepats = set(inpart.params.get(_SPECPART_EXCLUDE, '').splitlines())
narrowspec.save(op.repo, includepats, excludepats)
- if not narrowrepo.REQUIREMENT in op.repo.requirements:
- op.repo.requirements.add(narrowrepo.REQUIREMENT)
+ if not changegroup.NARROW_REQUIREMENT in op.repo.requirements:
+ op.repo.requirements.add(changegroup.NARROW_REQUIREMENT)
op.repo._writerequirements()
op.repo.invalidate(clearfilecache=True)
--- a/hgext/narrow/narrowchangegroup.py Wed Feb 21 14:36:42 2018 +0530
+++ b/hgext/narrow/narrowchangegroup.py Wed Feb 28 10:21:43 2018 -0800
@@ -19,15 +19,11 @@
util,
)
-from . import (
- narrowrepo,
-)
-
def setup():
def supportedoutgoingversions(orig, repo):
versions = orig(repo)
- if narrowrepo.REQUIREMENT in repo.requirements:
+ if changegroup.NARROW_REQUIREMENT in repo.requirements:
versions.discard('01')
versions.discard('02')
return versions
--- a/hgext/narrow/narrowcommands.py Wed Feb 21 14:36:42 2018 +0530
+++ b/hgext/narrow/narrowcommands.py Wed Feb 28 10:21:43 2018 -0800
@@ -10,6 +10,7 @@
from mercurial.i18n import _
from mercurial import (
+ changegroup,
cmdutil,
commands,
discovery,
@@ -105,7 +106,7 @@
repo.__class__.__bases__ = (repo.__class__.__bases__[0],
repo.unfiltered().__class__)
if opts_narrow:
- repo.requirements.add(narrowrepo.REQUIREMENT)
+ repo.requirements.add(changegroup.NARROW_REQUIREMENT)
repo._writerequirements()
return orig(repo, *args, **kwargs)
@@ -118,7 +119,7 @@
def pullnarrowcmd(orig, ui, repo, *args, **opts):
"""Wraps pull command to allow modifying narrow spec."""
wrappedextraprepare = util.nullcontextmanager()
- if narrowrepo.REQUIREMENT in repo.requirements:
+ if changegroup.NARROW_REQUIREMENT in repo.requirements:
def pullbundle2extraprepare_widen(orig, pullop, kwargs):
orig(pullop, kwargs)
@@ -132,7 +133,7 @@
def archivenarrowcmd(orig, ui, repo, *args, **opts):
"""Wraps archive command to narrow the default includes."""
- if narrowrepo.REQUIREMENT in repo.requirements:
+ if changegroup.NARROW_REQUIREMENT in repo.requirements:
repo_includes, repo_excludes = repo.narrowpats
includes = set(opts.get(r'include', []))
excludes = set(opts.get(r'exclude', []))
@@ -146,7 +147,7 @@
def pullbundle2extraprepare(orig, pullop, kwargs):
repo = pullop.repo
- if narrowrepo.REQUIREMENT not in repo.requirements:
+ if changegroup.NARROW_REQUIREMENT not in repo.requirements:
return orig(pullop, kwargs)
if narrowbundle2.NARROWCAP not in pullop.remotebundle2caps:
@@ -333,7 +334,7 @@
empty and will not match any files.
"""
opts = pycompat.byteskwargs(opts)
- if narrowrepo.REQUIREMENT not in repo.requirements:
+ if changegroup.NARROW_REQUIREMENT not in repo.requirements:
ui.warn(_('The narrow command is only supported on respositories cloned'
' with --narrow.\n'))
return 1
--- a/hgext/narrow/narrowrepo.py Wed Feb 21 14:36:42 2018 +0530
+++ b/hgext/narrow/narrowrepo.py Wed Feb 28 10:21:43 2018 -0800
@@ -9,6 +9,7 @@
from mercurial import (
bundlerepo,
+ changegroup,
hg,
localrepo,
match as matchmod,
@@ -20,19 +21,15 @@
narrowrevlog,
)
-# When narrowing is finalized and no longer subject to format changes,
-# we should move this to just "narrow" or similar.
-REQUIREMENT = 'narrowhg-experimental'
-
def wrappostshare(orig, sourcerepo, destrepo, **kwargs):
orig(sourcerepo, destrepo, **kwargs)
- if REQUIREMENT in sourcerepo.requirements:
+ if changegroup.NARROW_REQUIREMENT in sourcerepo.requirements:
with destrepo.wlock():
with destrepo.vfs('shared', 'a') as fp:
fp.write(narrowspec.FILENAME + '\n')
def unsharenarrowspec(orig, ui, repo, repopath):
- if (REQUIREMENT in repo.requirements
+ if (changegroup.NARROW_REQUIREMENT in repo.requirements
and repo.path == repopath and repo.shared()):
srcrepo = hg.sharedreposource(repo)
with srcrepo.vfs(narrowspec.FILENAME) as f:
--- a/mercurial/changegroup.py Wed Feb 21 14:36:42 2018 +0530
+++ b/mercurial/changegroup.py Wed Feb 28 10:21:43 2018 -0800
@@ -32,6 +32,10 @@
_CHANGEGROUPV2_DELTA_HEADER = "20s20s20s20s20s"
_CHANGEGROUPV3_DELTA_HEADER = ">20s20s20s20s20sH"
+# When narrowing is finalized and no longer subject to format changes,
+# we should move this to just "narrow" or similar.
+NARROW_REQUIREMENT = 'narrowhg-experimental'
+
readexactly = util.readexactly
def getchunk(stream):