# HG changeset patch # User Jordi GutiƩrrez Hermoso # Date 1550009431 18000 # Node ID 5d383d9636d0b81b416398913b32b8c715e98db5 # Parent 1ab6f5df263ec219165be7056aebe2f77c375353 walkchangerevs: obey allfiles parameter when taking the slow path When walkchangerevs sees that there's a pattern, it hits the slow path. The slow path in turn reverts to the old dumb grep behaviour of only looking at files changed at each revision. Therefore, a command such as hg grep -l --all-files '.*' 'glob:**' would show you all the nonempty files touched by the current revision. This modifies that behaviour to look at the manifest at each revision instead of the changed files in case that --all-files was requested. diff -r 1ab6f5df263e -r 5d383d9636d0 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Fri Feb 08 18:26:35 2019 +0100 +++ b/mercurial/cmdutil.py Tue Feb 12 17:10:31 2019 -0500 @@ -1961,7 +1961,10 @@ else: self.revs.discard(value) ctx = change(value) - matches = [f for f in ctx.files() if match(f)] + if allfiles: + matches = list(ctx.manifest().walk(match)) + else: + matches = [f for f in ctx.files() if match(f)] if matches: fncache[value] = matches self.set.add(value) diff -r 1ab6f5df263e -r 5d383d9636d0 tests/test-grep.t --- a/tests/test-grep.t Fri Feb 08 18:26:35 2019 +0100 +++ b/tests/test-grep.t Tue Feb 12 17:10:31 2019 -0500 @@ -517,5 +517,8 @@ $ hg grep -r "0:2" "unmod" --all-files um um:0:unmod um:1:unmod + $ hg grep -r "0:2" "unmod" --all-files "glob:**/um" # Check that patterns also work + um:0:unmod + um:1:unmod $ cd ..