logcmdutil: create hunksfilter and filematcher even if no diff option given
It's okay since
5fe6f946f111, "log: allow matchfn to be non-null even if both
--patch/--stat are off."
--- a/mercurial/commands.py Sun Jan 21 14:37:04 2018 +0900
+++ b/mercurial/commands.py Sun Jan 21 15:34:37 2018 +0900
@@ -3431,7 +3431,7 @@
revs, lrfilematcher, hunksfilter = logcmdutil.getlinerangerevs(
repo, revs, opts)
- if filematcher is not None and lrfilematcher is not None:
+ if filematcher is not None:
basefilematcher = filematcher
def filematcher(rev):
--- a/mercurial/logcmdutil.py Sun Jan 21 14:37:04 2018 +0900
+++ b/mercurial/logcmdutil.py Sun Jan 21 15:34:37 2018 +0900
@@ -792,11 +792,9 @@
"filematcher(ctx) -> match" is a factory function returning a match object
for a given revision for file patterns specified in --line-range option.
- If neither --stat nor --patch options are passed, "filematcher" is None.
"hunksfilter(ctx) -> filterfn(fctx, hunks)" is a factory function
returning a hunks filtering function.
- If neither --stat nor --patch options are passed, "filterhunks" is None.
"""
wctx = repo[None]
@@ -815,37 +813,33 @@
rev, {}).setdefault(
fctx.path(), []).append(linerange)
- filematcher = None
- hunksfilter = None
- if opts.get('patch') or opts.get('stat'):
+ def nofilterhunksfn(fctx, hunks):
+ return hunks
- def nofilterhunksfn(fctx, hunks):
- return hunks
-
- def hunksfilter(ctx):
- fctxlineranges = linerangesbyrev.get(ctx.rev())
- if fctxlineranges is None:
- return nofilterhunksfn
+ def hunksfilter(ctx):
+ fctxlineranges = linerangesbyrev.get(ctx.rev())
+ if fctxlineranges is None:
+ return nofilterhunksfn
- def filterfn(fctx, hunks):
- lineranges = fctxlineranges.get(fctx.path())
- if lineranges is not None:
- for hr, lines in hunks:
- if hr is None: # binary
- yield hr, lines
- continue
- if any(mdiff.hunkinrange(hr[2:], lr)
- for lr in lineranges):
- yield hr, lines
- else:
- for hunk in hunks:
- yield hunk
+ def filterfn(fctx, hunks):
+ lineranges = fctxlineranges.get(fctx.path())
+ if lineranges is not None:
+ for hr, lines in hunks:
+ if hr is None: # binary
+ yield hr, lines
+ continue
+ if any(mdiff.hunkinrange(hr[2:], lr)
+ for lr in lineranges):
+ yield hr, lines
+ else:
+ for hunk in hunks:
+ yield hunk
- return filterfn
+ return filterfn
- def filematcher(ctx):
- files = list(linerangesbyrev.get(ctx.rev(), []))
- return scmutil.matchfiles(repo, files)
+ def filematcher(ctx):
+ files = list(linerangesbyrev.get(ctx.rev(), []))
+ return scmutil.matchfiles(repo, files)
revs = sorted(linerangesbyrev, reverse=True)