# HG changeset patch # User Martin von Zweigbergk # Date 2018-09-29 00:09:15 # Node ID 2cf18f46a1ce0ac4bb4fe8389a23872b47e88847 # Parent 48a0ce67d67aea5a91982e042523f6b327a3e35d narrow: only walk files within narrowspec also for committed revisions Narrow has been walking only paths matching the narrowspec when walking the working copy. We have not done the same filtering when walking committed revisions (e.g. "hg files -r "), which seems a little odd. Let's make it consistent. Differential Revision: https://phab.mercurial-scm.org/D4898 diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -542,7 +542,7 @@ class changectx(basectx): return match.bad(fn, _('no such file in rev %s') % self) - m = matchmod.badmatch(match, bad) + m = matchmod.badmatch(self._repo.narrowmatch(match), bad) return self._manifest.walk(m) def matches(self, match): @@ -1168,7 +1168,7 @@ class committablectx(basectx): def walk(self, match): '''Generates matching file names.''' - return sorted(self._repo.dirstate.walk(match, + return sorted(self._repo.dirstate.walk(self._repo.narrowmatch(match), subrepos=sorted(self.substate), unknown=True, ignored=False)) diff --git a/tests/test-narrow-commit.t b/tests/test-narrow-commit.t --- a/tests/test-narrow-commit.t +++ b/tests/test-narrow-commit.t @@ -91,8 +91,6 @@ Can commit changes inside. Leaves outsid created new head $ hg files -r . inside/f1 - outside/f1 (flat !) - outside/ (tree !) $ hg manifest --debug 3f4197b4a11b9016e77ebc47fe566944885fd11b 644 inside/f1 7fb3bb6356d28d4dc352c5ba52d7350a81b6bd46 644 outside/f1 (flat !)