diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -588,10 +588,6 @@ class changectx(basectx): def walk(self, match): fset = set(match.files()) - # for dirstate.walk, files=['.'] means "walk the whole tree". - # follow that here, too - fset.discard('.') - # avoid the entire walk if we're only looking for specific files if fset and not match.anypats(): if util.all(fn in self for fn in fset): @@ -606,6 +602,9 @@ class changectx(basectx): fset.remove(fn) if match(fn): yield fn + # for dirstate.walk, files=['.'] means "walk the whole tree". + # follow that here, too + fset.discard('.') for fn in sorted(fset): if not self.hasdir(fn): match.bad(fn, _('no such file in rev %s') % self) diff --git a/tests/test-cat.t b/tests/test-cat.t --- a/tests/test-cat.t +++ b/tests/test-cat.t @@ -22,10 +22,22 @@ $ hg cat -r 1 b 1 -Test fileset +Test multiple files $ echo 3 > c $ hg ci -Am addmore c + $ hg cat b c + 1 + 3 + $ hg cat . + 1 + 3 + $ hg cat . c + 1 + 3 + +Test fileset + $ hg cat 'set:not(b) or a' 3 $ hg cat 'set:c or b'