Mercurial > hg
changeset 36005:dd77e36eabb6
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."
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 21 Jan 2018 15:34:37 +0900 |
parents | d4c210ee894f |
children | f113ac0750f3 |
files | mercurial/commands.py mercurial/logcmdutil.py |
diffstat | 2 files changed, 24 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- 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)