Mercurial > hg
changeset 45648:3a024d7cd08e
cmdutil: make walkchangerevs() call prepare with matcher instead of filenames
Prepares for migrating walkchangerevs() to logcmdutil's logic, which provides
matcher-based interface.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Thu, 10 Sep 2020 16:14:48 +0900 |
parents | 9fead7d97069 |
children | bba730d7a6f4 |
files | hgext/churn.py mercurial/cmdutil.py mercurial/commands.py |
diffstat | 3 files changed, 7 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/churn.py Thu Sep 10 18:40:01 2020 +0900 +++ b/hgext/churn.py Thu Sep 10 16:14:48 2020 +0900 @@ -36,9 +36,8 @@ testedwith = b'ships-with-hg-core' -def changedlines(ui, repo, ctx1, ctx2, fns): +def changedlines(ui, repo, ctx1, ctx2, fmatch): added, removed = 0, 0 - fmatch = scmutil.matchfiles(repo, fns) diff = b''.join(patch.diff(repo, ctx1.node(), ctx2.node(), fmatch)) for l in diff.split(b'\n'): if l.startswith(b"+") and not l.startswith(b"+++ "): @@ -79,7 +78,7 @@ m = scmutil.match(repo[None], pats, opts) - def prep(ctx, fns): + def prep(ctx, fmatch): rev = ctx.rev() if df and not df(ctx.date()[0]): # doesn't match date format return @@ -95,7 +94,7 @@ return ctx1 = parents[0] - lines = changedlines(ui, repo, ctx1, ctx, fns) + lines = changedlines(ui, repo, ctx1, ctx, fmatch) rate[key] = [r + l for r, l in zip(rate.get(key, (0, 0)), lines)] progress.increment()
--- a/mercurial/cmdutil.py Thu Sep 10 18:40:01 2020 +0900 +++ b/mercurial/cmdutil.py Thu Sep 10 16:14:48 2020 +0900 @@ -2574,7 +2574,7 @@ yield f fns = fns_generator() - prepare(ctx, fns) + prepare(ctx, scmutil.matchfiles(repo, fns)) for rev in nrevs: yield change(rev)
--- a/mercurial/commands.py Thu Sep 10 18:40:01 2020 +0900 +++ b/mercurial/commands.py Thu Sep 10 16:14:48 2020 +0900 @@ -3606,7 +3606,7 @@ % {b'filename': fn, b'revnum': pycompat.bytestr(rev),} ) - def prep(ctx, fns): + def prep(ctx, fmatch): rev = ctx.rev() pctx = ctx.p1() matches.setdefault(rev, {}) @@ -3621,7 +3621,8 @@ else: contextmanager = util.nullcontextmanager with contextmanager(): - for fn in fns: + assert fmatch.isexact() + for fn in fmatch.files(): # fn might not exist in the revision (could be a file removed by # the revision). We could check `fn not in ctx` even when rev is # None, but it's less racy to protect againt that in readfile.