D5128: remotefilelog: consolidate and rename on-disk store requirement

durin42 (Augie Fackler) phabricator at mercurial-scm.org
Tue Oct 16 21:46:22 UTC 2018


durin42 created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  The value of this constant appeared in too many places. While we're
  here, rename it to be more consistent with our naming conventions for
  experimental functionality.
  
  https://phab.mercurial-scm.org/D5125

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D5128

AFFECTED FILES
  hgext/remotefilelog/__init__.py
  hgext/remotefilelog/constants.py
  hgext/remotefilelog/debugcommands.py
  hgext/remotefilelog/fileserverclient.py
  hgext/remotefilelog/remotefilelogserver.py
  hgext/remotefilelog/shallowbundle.py
  hgext/remotefilelog/shallowrepo.py
  tests/test-remotefilelog-clone-tree.t
  tests/test-remotefilelog-clone.t
  tests/test-remotefilelog-log.t

CHANGE DETAILS

diff --git a/tests/test-remotefilelog-log.t b/tests/test-remotefilelog-log.t
--- a/tests/test-remotefilelog-log.t
+++ b/tests/test-remotefilelog-log.t
@@ -28,9 +28,9 @@
   $ cd shallow
   $ cat .hg/requires
   dotencode
+  exp-remotefilelog-repo-req-1
   fncache
   generaldelta
-  remotefilelog
   revlogv1
   store
 
diff --git a/tests/test-remotefilelog-clone.t b/tests/test-remotefilelog-clone.t
--- a/tests/test-remotefilelog-clone.t
+++ b/tests/test-remotefilelog-clone.t
@@ -25,9 +25,9 @@
   $ cd shallow
   $ cat .hg/requires
   dotencode
+  exp-remotefilelog-repo-req-1
   fncache
   generaldelta
-  remotefilelog
   revlogv1
   store
 
@@ -58,9 +58,9 @@
   $ cd shallow2
   $ cat .hg/requires
   dotencode
+  exp-remotefilelog-repo-req-1
   fncache
   generaldelta
-  remotefilelog
   revlogv1
   store
   $ ls .hg/store/data
@@ -106,8 +106,8 @@
   $ ls shallow3/.hg/store/data
   $ cat shallow3/.hg/requires
   dotencode
+  exp-remotefilelog-repo-req-1
   fncache
   generaldelta
-  remotefilelog
   revlogv1
   store
diff --git a/tests/test-remotefilelog-clone-tree.t b/tests/test-remotefilelog-clone-tree.t
--- a/tests/test-remotefilelog-clone-tree.t
+++ b/tests/test-remotefilelog-clone-tree.t
@@ -28,9 +28,9 @@
   $ cd shallow
   $ cat .hg/requires
   dotencode
+  exp-remotefilelog-repo-req-1
   fncache
   generaldelta
-  remotefilelog
   revlogv1
   store
   treemanifest
@@ -68,9 +68,9 @@
   $ cd shallow2
   $ cat .hg/requires
   dotencode
+  exp-remotefilelog-repo-req-1
   fncache
   generaldelta
-  remotefilelog
   revlogv1
   store
   treemanifest
@@ -109,9 +109,9 @@
   $ ls shallow3/.hg/store/data
   $ cat shallow3/.hg/requires
   dotencode
+  exp-remotefilelog-repo-req-1
   fncache
   generaldelta
-  remotefilelog
   revlogv1
   store
   treemanifest
diff --git a/hgext/remotefilelog/shallowrepo.py b/hgext/remotefilelog/shallowrepo.py
--- a/hgext/remotefilelog/shallowrepo.py
+++ b/hgext/remotefilelog/shallowrepo.py
@@ -40,7 +40,6 @@
     from mercurial.utils import procutil
     _hgexecutable = procutil.hgexecutable
 
-requirement = "remotefilelog"
 _prefetching = _('prefetching')
 
 # These make*stores functions are global so that other extensions can replace
diff --git a/hgext/remotefilelog/shallowbundle.py b/hgext/remotefilelog/shallowbundle.py
--- a/hgext/remotefilelog/shallowbundle.py
+++ b/hgext/remotefilelog/shallowbundle.py
@@ -26,8 +26,6 @@
 LocalFiles = 1
 AllFiles = 2
 
-requirement = "remotefilelog"
-
 def shallowgroup(cls, self, nodelist, rlog, lookup, units=None, reorder=None):
     if not isinstance(rlog, remotefilelog.remotefilelog):
         for c in super(cls, self).group(nodelist, rlog, lookup,
@@ -56,7 +54,7 @@
 
 class shallowcg1packer(changegroup.cgpacker):
     def generate(self, commonrevs, clnodes, fastpathlinkrev, source):
-        if "remotefilelog" in self._repo.requirements:
+        if constants.SHALLOWREPO_REQUIREMENT in self._repo.requirements:
             fastpathlinkrev = False
 
         return super(shallowcg1packer, self).generate(commonrevs, clnodes,
@@ -71,7 +69,7 @@
             linknodes, commonrevs, source = args
         except ValueError:
             commonrevs, source, mfdicts, fastpathlinkrev, fnodes, clrevs = args
-        if requirement in self._repo.requirements:
+        if constants.SHALLOWREPO_REQUIREMENT in self._repo.requirements:
             repo = self._repo
             if isinstance(repo, bundlerepo.bundlerepository):
                 # If the bundle contains filelogs, we can't pull from it, since
@@ -93,7 +91,7 @@
 
     def shouldaddfilegroups(self, source):
         repo = self._repo
-        if not requirement in repo.requirements:
+        if not constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
             return AllFiles
 
         if source == "push" or source == "bundle":
@@ -141,7 +139,7 @@
         yield delta
 
 def makechangegroup(orig, repo, outgoing, version, source, *args, **kwargs):
-    if not requirement in repo.requirements:
+    if not constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
         return orig(repo, outgoing, version, source, *args, **kwargs)
 
     original = repo.shallowmatch
@@ -170,7 +168,7 @@
         repo.shallowmatch = original
 
 def addchangegroupfiles(orig, repo, source, revmap, trp, expectedfiles, *args):
-    if not requirement in repo.requirements:
+    if not constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
         return orig(repo, source, revmap, trp, expectedfiles, *args)
 
     files = 0
diff --git a/hgext/remotefilelog/remotefilelogserver.py b/hgext/remotefilelog/remotefilelogserver.py
--- a/hgext/remotefilelog/remotefilelogserver.py
+++ b/hgext/remotefilelog/remotefilelogserver.py
@@ -30,7 +30,6 @@
 )
 from .  import (
     constants,
-    shallowrepo,
     shallowutil,
 )
 
@@ -133,7 +132,7 @@
     def _walkstreamfiles(orig, repo):
         if state.shallowremote:
             # if we are shallow ourselves, stream our local commits
-            if shallowrepo.requirement in repo.requirements:
+            if constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
                 striplen = len(repo.store.path) + 1
                 readdir = repo.store.rawvfs.readdir
                 visit = [os.path.join(repo.store.path, 'data')]
@@ -167,7 +166,7 @@
                     continue
                 yield x
 
-        elif shallowrepo.requirement in repo.requirements:
+        elif constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
             # don't allow cloning from a shallow repo to a full repo
             # since it would require fetching every version of every
             # file in order to create the revlogs.
@@ -194,7 +193,7 @@
     # expose remotefilelog capabilities
     def _capabilities(orig, repo, proto):
         caps = orig(repo, proto)
-        if ((shallowrepo.requirement in repo.requirements or
+        if ((constants.SHALLOWREPO_REQUIREMENT in repo.requirements or
             ui.configbool('remotefilelog', 'server'))):
             if isinstance(proto, _sshv1server):
                 # legacy getfiles method which only works over ssh
@@ -279,7 +278,7 @@
     data is a compressed blob with revlog flag and ancestors information. See
     createfileblob for its content.
     """
-    if shallowrepo.requirement in repo.requirements:
+    if constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
         return '1\0' + _('cannot fetch remote files from shallow repo')
     cachepath = repo.ui.config("remotefilelog", "servercachepath")
     if not cachepath:
@@ -292,7 +291,7 @@
 def getfiles(repo, proto):
     """A server api for requesting particular versions of particular files.
     """
-    if shallowrepo.requirement in repo.requirements:
+    if constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
         raise error.Abort(_('cannot fetch remote files from shallow repo'))
     if not isinstance(proto, _sshv1server):
         raise error.Abort(_('cannot fetch remote files over non-ssh protocol'))
diff --git a/hgext/remotefilelog/fileserverclient.py b/hgext/remotefilelog/fileserverclient.py
--- a/hgext/remotefilelog/fileserverclient.py
+++ b/hgext/remotefilelog/fileserverclient.py
@@ -83,7 +83,8 @@
                 return
             if not util.safehasattr(self, '_localrepo'):
                 return
-            if constants.REQUIREMENT not in self._localrepo.requirements:
+            if (constants.SHALLOWREPO_REQUIREMENT
+                not in self._localrepo.requirements):
                 return
 
             bundlecaps = opts.get('bundlecaps')
diff --git a/hgext/remotefilelog/debugcommands.py b/hgext/remotefilelog/debugcommands.py
--- a/hgext/remotefilelog/debugcommands.py
+++ b/hgext/remotefilelog/debugcommands.py
@@ -24,7 +24,6 @@
     fileserverclient,
     historypack,
     repack,
-    shallowrepo,
     shallowutil,
 )
 
@@ -93,7 +92,7 @@
     if (opts.get('changelog') or
         opts.get('manifest') or
         opts.get('dir') or
-        not shallowrepo.requirement in repo.requirements or
+        not constants.SHALLOWREPO_REQUIREMENT in repo.requirements or
         not repo.shallowmatch(file_)):
         return orig(ui, repo, file_, **opts)
 
@@ -140,7 +139,7 @@
 
 def debugindexdot(orig, ui, repo, file_):
     """dump an index DAG as a graphviz dot file"""
-    if not shallowrepo.requirement in repo.requirements:
+    if not constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
         return orig(ui, repo, file_)
 
     r = buildtemprevlog(repo, os.path.basename(file_)[:-2])
diff --git a/hgext/remotefilelog/constants.py b/hgext/remotefilelog/constants.py
--- a/hgext/remotefilelog/constants.py
+++ b/hgext/remotefilelog/constants.py
@@ -4,9 +4,9 @@
 
 from mercurial.i18n import _
 
-REQUIREMENT = "remotefilelog"
+NETWORK_CAP_LEGACY_SSH_GETFILES = 'exp-remotefilelog-ssh-getfiles-1'
 
-NETWORK_CAP_LEGACY_SSH_GETFILES = 'exp-remotefilelog-ssh-getfiles-1'
+SHALLOWREPO_REQUIREMENT = "exp-remotefilelog-repo-req-1"
 
 BUNDLE2_CAPABLITY = "exp-remotefilelog-b2cap-1"
 
diff --git a/hgext/remotefilelog/__init__.py b/hgext/remotefilelog/__init__.py
--- a/hgext/remotefilelog/__init__.py
+++ b/hgext/remotefilelog/__init__.py
@@ -209,7 +209,7 @@
 testedwith = 'ships-with-hg-core'
 
 repoclass = localrepo.localrepository
-repoclass._basesupported.add(shallowrepo.requirement)
+repoclass._basesupported.add(constants.SHALLOWREPO_REQUIREMENT)
 
 def uisetup(ui):
     """Wraps user facing Mercurial commands to swap them out with shallow
@@ -231,7 +231,8 @@
 
     # Prevent 'hg manifest --all'
     def _manifest(orig, ui, repo, *args, **opts):
-        if shallowrepo.requirement in repo.requirements and opts.get('all'):
+        if (constants.SHALLOWREPO_REQUIREMENT in repo.requirements
+            and opts.get('all')):
             raise error.Abort(_("--all is not supported in a shallow repo"))
 
         return orig(ui, repo, *args, **opts)
@@ -256,7 +257,7 @@
     if opts.get('shallow'):
         repos = []
         def pull_shallow(orig, self, *args, **kwargs):
-            if shallowrepo.requirement not in self.requirements:
+            if constants.SHALLOWREPO_REQUIREMENT not in self.requirements:
                 repos.append(self.unfiltered())
                 # set up the client hooks so the post-clone update works
                 setupclient(self.ui, self.unfiltered())
@@ -266,7 +267,7 @@
                 if isinstance(self, repoview.repoview):
                     self.__class__.__bases__ = (self.__class__.__bases__[0],
                                                 self.unfiltered().__class__)
-                self.requirements.add(shallowrepo.requirement)
+                self.requirements.add(constants.SHALLOWREPO_REQUIREMENT)
                 self._writerequirements()
 
                 # Since setupclient hadn't been called, exchange.pull was not
@@ -312,14 +313,14 @@
                     return False, None
                 supported, requirements = orig(pullop, bundle2=bundle2)
                 if requirements is not None:
-                    requirements.add(shallowrepo.requirement)
+                    requirements.add(constants.SHALLOWREPO_REQUIREMENT)
                 return supported, requirements
             extensions.wrapfunction(
                 streamclone, 'canperformstreamclone', canperformstreamclone)
         else:
             def stream_in_shallow(orig, repo, remote, requirements):
                 setup_streamout(repo, remote)
-                requirements.add(shallowrepo.requirement)
+                requirements.add(constants.SHALLOWREPO_REQUIREMENT)
                 return orig(repo, remote, requirements)
             extensions.wrapfunction(
                 localrepo.localrepository, 'stream_in', stream_in_shallow)
@@ -349,7 +350,7 @@
     ui.setconfig('hooks', 'commit.prefetch', wcpprefetch)
 
     isserverenabled = ui.configbool('remotefilelog', 'server')
-    isshallowclient = shallowrepo.requirement in repo.requirements
+    isshallowclient = constants.SHALLOWREPO_REQUIREMENT in repo.requirements
 
     if isserverenabled and isshallowclient:
         raise RuntimeError("Cannot be both a server and shallow client.")
@@ -388,7 +389,7 @@
 
     def storewrapper(orig, requirements, path, vfstype):
         s = orig(requirements, path, vfstype)
-        if shallowrepo.requirement in requirements:
+        if constants.SHALLOWREPO_REQUIREMENT in requirements:
             s = shallowstore.wrapstore(s)
 
         return s
@@ -398,7 +399,7 @@
 
     # prefetch files before update
     def applyupdates(orig, repo, actions, wctx, mctx, overwrite, labels=None):
-        if shallowrepo.requirement in repo.requirements:
+        if constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
             manifest = mctx.manifest()
             files = []
             for f, args, msg in actions['g']:
@@ -411,7 +412,7 @@
     # Prefetch merge checkunknownfiles
     def checkunknownfiles(orig, repo, wctx, mctx, force, actions,
                           *args, **kwargs):
-        if shallowrepo.requirement in repo.requirements:
+        if constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
             files = []
             sparsematch = repo.maybesparsematch(mctx.rev())
             for f, (m, actionargs, msg) in actions.iteritems():
@@ -430,7 +431,7 @@
     # Prefetch files before status attempts to look at their size and contents
     def checklookup(orig, self, files):
         repo = self._repo
-        if shallowrepo.requirement in repo.requirements:
+        if constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
             prefetchfiles = []
             for parent in self._parents:
                 for f in files:
@@ -443,7 +444,7 @@
 
     # Prefetch the logic that compares added and removed files for renames
     def findrenames(orig, repo, matcher, added, removed, *args, **kwargs):
-        if shallowrepo.requirement in repo.requirements:
+        if constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
             files = []
             parentctx = repo['.']
             for f in removed:
@@ -456,7 +457,7 @@
     # prefetch files before mergecopies check
     def computenonoverlap(orig, repo, c1, c2, *args, **kwargs):
         u1, u2 = orig(repo, c1, c2, *args, **kwargs)
-        if shallowrepo.requirement in repo.requirements:
+        if constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
             m1 = c1.manifest()
             m2 = c2.manifest()
             files = []
@@ -488,7 +489,7 @@
     def computeforwardmissing(orig, a, b, match=None):
         missing = list(orig(a, b, match=match))
         repo = a._repo
-        if shallowrepo.requirement in repo.requirements:
+        if constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
             mb = b.manifest()
 
             files = []
@@ -515,7 +516,7 @@
             # repo can be None when running in chg:
             # - at startup, reposetup was called because serve is not norepo
             # - a norepo command like "help" is called
-            if repo and shallowrepo.requirement in repo.requirements:
+            if repo and constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
                 repo.fileservice.close()
     extensions.wrapfunction(dispatch, 'runcommand', runcommand)
 
@@ -527,7 +528,7 @@
 
     # prevent strip from stripping remotefilelogs
     def _collectbrokencsets(orig, repo, files, striprev):
-        if shallowrepo.requirement in repo.requirements:
+        if constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
             files = list([f for f in files if not repo.shallowmatch(f)])
         return orig(repo, files, striprev)
     extensions.wrapfunction(repair, '_collectbrokencsets', _collectbrokencsets)
@@ -578,15 +579,15 @@
     def filectx(orig, self, path, fileid=None, filelog=None):
         if fileid is None:
             fileid = self.filenode(path)
-        if (shallowrepo.requirement in self._repo.requirements and
+        if (constants.SHALLOWREPO_REQUIREMENT in self._repo.requirements and
             self._repo.shallowmatch(path)):
             return remotefilectx.remotefilectx(self._repo, path,
                 fileid=fileid, changectx=self, filelog=filelog)
         return orig(self, path, fileid=fileid, filelog=filelog)
     extensions.wrapfunction(context.changectx, 'filectx', filectx)
 
     def workingfilectx(orig, self, path, filelog=None):
-        if (shallowrepo.requirement in self._repo.requirements and
+        if (constants.SHALLOWREPO_REQUIREMENT in self._repo.requirements and
             self._repo.shallowmatch(path)):
             return remotefilectx.remoteworkingfilectx(self._repo,
                 path, workingctx=self, filelog=filelog)
@@ -596,7 +597,7 @@
     # prefetch required revisions before a diff
     def trydiff(orig, repo, revs, ctx1, ctx2, modified, added, removed,
                 copy, getfilectx, *args, **kwargs):
-        if shallowrepo.requirement in repo.requirements:
+        if constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
             prefetch = []
             mf1 = ctx1.manifest()
             for fname in modified + added + removed:
@@ -654,7 +655,7 @@
     return getrenamed
 
 def walkfilerevs(orig, repo, match, follow, revs, fncache):
-    if not shallowrepo.requirement in repo.requirements:
+    if not constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
         return orig(repo, match, follow, revs, fncache)
 
     # remotefilelog's can't be walked in rev order, so throw.
@@ -694,7 +695,7 @@
     a slower, more accurate result, use ``file()``.
     """
 
-    if not shallowrepo.requirement in repo.requirements:
+    if not constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
         return orig(repo, subset, x)
 
     # i18n: "filelog" is a keyword
@@ -802,7 +803,7 @@
         # Protect against any repo or config changes that have happened since
         # this repo was added to the repos file. We'd rather this loop succeed
         # and too much be deleted, than the loop fail and nothing gets deleted.
-        if shallowrepo.requirement not in repo.requirements:
+        if constants.SHALLOWREPO_REQUIREMENT not in repo.requirements:
             continue
 
         if not util.safehasattr(repo, 'name'):
@@ -851,7 +852,7 @@
         ui.warn(_("warning: no valid repos in repofile\n"))
 
 def log(orig, ui, repo, *pats, **opts):
-    if shallowrepo.requirement not in repo.requirements:
+    if constants.SHALLOWREPO_REQUIREMENT not in repo.requirements:
         return orig(ui, repo, *pats, **opts)
 
     follow = opts.get('follow')
@@ -912,7 +913,7 @@
     """Prefetches in background revisions specified by bgprefetchrevs revset.
     Does background repack if backgroundrepack flag is set in config.
     """
-    shallow = shallowrepo.requirement in repo.requirements
+    shallow = constants.SHALLOWREPO_REQUIREMENT in repo.requirements
     bgprefetchrevs = ui.config('remotefilelog', 'bgprefetchrevs')
     isready = readytofetch(repo)
 
@@ -934,7 +935,7 @@
 def pull(orig, ui, repo, *pats, **opts):
     result = orig(ui, repo, *pats, **opts)
 
-    if shallowrepo.requirement in repo.requirements:
+    if constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
         # prefetch if it's configured
         prefetchrevset = ui.config('remotefilelog', 'pullprefetch')
         bgrepack = repo.ui.configbool('remotefilelog', 'backgroundrepack')
@@ -974,7 +975,7 @@
     return orig(repo, remote, *args, **kwargs)
 
 def _fileprefetchhook(repo, revs, match):
-    if shallowrepo.requirement in repo.requirements:
+    if constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
         allfiles = []
         for rev in revs:
             if rev == nodemod.wdirrev or rev is None:
@@ -1070,7 +1071,7 @@
 
     Return 0 on success.
     """
-    if not shallowrepo.requirement in repo.requirements:
+    if not constants.SHALLOWREPO_REQUIREMENT in repo.requirements:
         raise error.Abort(_("repo is not shallow"))
 
     opts = resolveprefetchopts(ui, opts)



To: durin42, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list