changeset 33298:f41a99c45956

sparse: move profile reading into core One more step towards weaning off methods on repo instances and moving code to core. While this function is only used once and is simple, it needs to exist on its own so Facebook can monkeypatch it to enable simplecache integration.
author Gregory Szorc <gregory.szorc@gmail.com>
date Thu, 06 Jul 2017 12:14:12 -0700
parents ba5d89774db6
children 41448fc51510
files hgext/sparse.py mercurial/sparse.py
diffstat 2 files changed, 8 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/sparse.py	Thu Jul 06 12:14:03 2017 -0700
+++ b/hgext/sparse.py	Thu Jul 06 12:14:12 2017 -0700
@@ -431,7 +431,7 @@
                     visited.add(profile)
 
                     try:
-                        raw = self.getrawprofile(profile, rev)
+                        raw = sparse.readprofile(self, profile, rev)
                     except error.ManifestLookupError:
                         msg = (
                             "warning: sparse profile '%s' not found "
@@ -455,11 +455,6 @@
                 includes.add('.hg*')
             return includes, excludes, profiles
 
-        def getrawprofile(self, profile, changeid):
-            # TODO add some kind of cache here because this incurs a manifest
-            # resolve and can be slow.
-            return self.filectx(profile, changeid=changeid).data()
-
         def _sparsechecksum(self, path):
             data = self.vfs.read(path)
             return hashlib.sha1(data).hexdigest()
--- a/mercurial/sparse.py	Thu Jul 06 12:14:03 2017 -0700
+++ b/mercurial/sparse.py	Thu Jul 06 12:14:12 2017 -0700
@@ -46,3 +46,10 @@
             current.add(line)
 
     return includes, excludes, profiles
+
+# Exists as separate function to facilitate monkeypatching.
+def readprofile(repo, profile, changeid):
+    """Resolve the raw content of a sparse profile file."""
+    # TODO add some kind of cache here because this incurs a manifest
+    # resolve and can be slow.
+    return repo.filectx(profile, changeid=changeid).data()