changeset 36494:3f0af89e008d

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
author Martin von Zweigbergk <martinvonz@google.com>
date Wed, 28 Feb 2018 10:21:43 -0800
parents 1bd132a021dd
children 94709406f10d
files hgext/narrow/__init__.py hgext/narrow/narrowbundle2.py hgext/narrow/narrowchangegroup.py hgext/narrow/narrowcommands.py hgext/narrow/narrowrepo.py mercurial/changegroup.py
diffstat 6 files changed, 19 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- 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):