# HG changeset patch # User Gregory Szorc # Date 2017-07-06 19:14:12 # Node ID f41a99c45956187807cc355a48522cf30825ff56 # Parent ba5d89774db6859bd06bd79c39284058253be38b 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. 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()