diff --git a/hgext/sparse.py b/hgext/sparse.py --- a/hgext/sparse.py +++ b/hgext/sparse.py @@ -431,7 +431,7 @@ def _wraprepo(ui, repo): 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 @@ def _wraprepo(ui, repo): 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() diff --git a/mercurial/sparse.py b/mercurial/sparse.py --- a/mercurial/sparse.py +++ b/mercurial/sparse.py @@ -46,3 +46,10 @@ def parseconfig(ui, raw): 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()