mercurial/commands.py
changeset 45721 f9d3ff23bfc0
parent 45720 508dfd1c18df
child 45731 03690079d7dd
--- a/mercurial/commands.py	Sun Oct 04 13:17:57 2020 +0900
+++ b/mercurial/commands.py	Wed Sep 09 17:17:38 2020 +0900
@@ -3403,8 +3403,6 @@
     )
 
     getfile = searcher._getfile
-    matches = searcher._matches
-    copies = searcher._copies
 
     uipathfn = scmutil.getuipathfn(repo)
 
@@ -3514,8 +3512,6 @@
             fm.data(matched=False)
         fm.end()
 
-    skip = searcher._skip
-    revfiles = searcher._revfiles
     found = False
 
     wopts = logcmdutil.walkopts(
@@ -3532,29 +3528,11 @@
 
     ui.pager(b'grep')
     fm = ui.formatter(b'grep', opts)
-    for ctx in scmutil.walkchangerevs(
-        repo, revs, makefilematcher, searcher._prep
-    ):
-        rev = ctx.rev()
-        parent = ctx.p1().rev()
-        for fn in sorted(revfiles.get(rev, [])):
-            states = matches[rev][fn]
-            copy = copies.get(rev, {}).get(fn)
-            if fn in skip:
-                if copy:
-                    skip.add(copy)
-                continue
-            pstates = matches.get(parent, {}).get(copy or fn, [])
-            if pstates or states:
-                r = display(fm, fn, ctx, pstates, states)
-                found = found or r
-                if r and not diff and not all_files:
-                    searcher.skipfile(fn, 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()
+    for fn, ctx, pstates, states in searcher.searchfiles(revs, makefilematcher):
+        r = display(fm, fn, ctx, pstates, states)
+        found = found or r
+        if r and not diff and not all_files:
+            searcher.skipfile(fn, ctx.rev())
     fm.end()
 
     return not found