[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