[Request] [+- ] D8544: grep: stop computing information for --diff when unnecessary

valentin.gatienbaron (Valentin Gatien-Baron) phabricator at mercurial-scm.org
Sun May 17 17:50:05 UTC 2020


valentin.gatienbaron created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  This is one reason why `hg grep pattern` essentially does `hg cat -r
  . 'set:**'` inside. There is no speed improvement in this commit,
  because the rest of the code still greps data from filelog instead of
  working copy when possible.

REPOSITORY
  rHG Mercurial

BRANCH
  default

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

AFFECTED FILES
  mercurial/commands.py

CHANGE DETAILS

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -3594,9 +3594,10 @@
     def prep(ctx, fns):
         rev = ctx.rev()
         pctx = ctx.p1()
-        parent = pctx.rev()
         matches.setdefault(rev, {})
-        matches.setdefault(parent, {})
+        if diff:
+            parent = pctx.rev()
+            matches.setdefault(parent, {})
         files = revfiles.setdefault(rev, [])
         for fn in fns:
             flog = getfile(fn)
@@ -3620,14 +3621,17 @@
                 content = get_file_content(fn, flog, fnode, ctx, rev)
                 grepbody(fn, rev, content)
 
-            pfn = copy or fn
-            if pfn not in matches[parent]:
-                try:
-                    pfnode = pctx.filenode(pfn)
-                    pcontent = get_file_content(pfn, flog, pfnode, pctx, parent)
-                    grepbody(pfn, parent, pcontent)
-                except error.LookupError:
-                    pass
+            if diff:
+                pfn = copy or fn
+                if pfn not in matches[parent]:
+                    try:
+                        pfnode = pctx.filenode(pfn)
+                        pcontent = get_file_content(
+                            pfn, flog, pfnode, pctx, parent
+                        )
+                        grepbody(pfn, parent, pcontent)
+                    except error.LookupError:
+                        pass
 
     ui.pager(b'grep')
     fm = ui.formatter(b'grep', opts)



To: valentin.gatienbaron, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mercurial-scm.org/pipermail/mercurial-patches/attachments/20200517/3ba1aa92/attachment.html>


More information about the Mercurial-patches mailing list