diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2589,8 +2589,11 @@ skip[fn] = True if copy: skip[copy] = True - del matches[rev] del revfiles[rev] + # We will keep the matches dict for the duration of the window + # clear the matches dict once the window is over + if not revfiles: + matches.clear() fm.end() return not found diff --git a/tests/test-grep.t b/tests/test-grep.t --- a/tests/test-grep.t +++ b/tests/test-grep.t @@ -330,6 +330,18 @@ color:3:-:red color:1:+:red + +Issue3885: test that changing revision order does not alter the +revisions printed, just their order. + + $ hg grep --all red -r "all()" + color:1:+:red + color:3:-:red + + $ hg grep --all red -r "reverse(all())" + color:3:-:red + color:1:+:red + $ cd .. $ hg init a