D7820: grep: speed up `hg grep --all-files some/path` by using ctx.matches(match)

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Mon Jan 13 09:18:56 EST 2020


Closed by commit rHG6cfaebb625d3: grep: speed up `hg grep --all-files some/path` by using ctx.matches(match) (authored by martinvonz).
This revision was automatically updated to reflect the committed changes.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D7820?vs=19140&id=19160

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D7820/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D7820

AFFECTED FILES
  mercurial/cmdutil.py

CHANGE DETAILS

diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -2429,12 +2429,16 @@
 
                     def fns_generator():
                         if allfiles:
-                            fiter = iter(ctx)
+
+                            def bad(f, msg):
+                                pass
+
+                            for f in ctx.matches(matchmod.badmatch(match, bad)):
+                                yield f
                         else:
-                            fiter = ctx.files()
-                        for f in fiter:
-                            if match(f):
-                                yield f
+                            for f in ctx.files():
+                                if match(f):
+                                    yield f
 
                     fns = fns_generator()
                 prepare(ctx, fns)



To: martinvonz, #hg-reviewers, pulkit
Cc: mercurial-devel


More information about the Mercurial-devel mailing list