diff --git a/hgext/lfs/__init__.py b/hgext/lfs/__init__.py --- a/hgext/lfs/__init__.py +++ b/hgext/lfs/__init__.py @@ -243,7 +243,7 @@ s = repo.set('%n:%n', _bin(kwargs[r'node']), _bin(last)) else: s = repo.set('%n', _bin(kwargs[r'node'])) - match = repo.narrowmatch() + match = repo._storenarrowmatch for ctx in s: # TODO: is there a way to just walk the files in the commit? if any(ctx[f].islfs() for f in ctx.files() diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -815,7 +815,7 @@ if path[0] == b'/': path = path[1:] - return filelog.narrowfilelog(self.svfs, path, self.narrowmatch()) + return filelog.narrowfilelog(self.svfs, path, self._storenarrowmatch) def makefilestorage(requirements, features, **kwargs): """Produce a type conforming to ``ilocalrepositoryfilestorage``.""" @@ -1191,7 +1191,7 @@ def manifestlog(self): rootstore = manifest.manifestrevlog(self.svfs) return manifest.manifestlog(self.svfs, self, rootstore, - self.narrowmatch()) + self._storenarrowmatch) @repofilecache('dirstate') def dirstate(self): @@ -1224,6 +1224,13 @@ return narrowspec.load(self) @storecache(narrowspec.FILENAME) + def _storenarrowmatch(self): + if repository.NARROW_REQUIREMENT not in self.requirements: + return matchmod.always(self.root, '') + include, exclude = self.narrowpats + return narrowspec.match(self.root, include=include, exclude=exclude) + + @storecache(narrowspec.FILENAME) def _narrowmatch(self): if repository.NARROW_REQUIREMENT not in self.requirements: return matchmod.always(self.root, '')