log: pass getcopies() function instead of getrenamed() to displayer (API)
This reduces the duplication between the two displayer functions (and
between them and scmutil.getcopiesfn()). It's still more code than two
patches ago, but there's less duplication.
Differential Revision: https://phab.mercurial-scm.org/D6546
--- a/mercurial/commands.py Wed Jun 19 09:59:45 2019 -0700
+++ b/mercurial/commands.py Wed Jun 19 10:19:32 2019 -0700
@@ -3887,12 +3887,12 @@
# then filter the result by logcmdutil._makerevset() and --limit
revs, differ = logcmdutil.getlinerangerevs(repo, revs, opts)
- getrenamed = None
+ getcopies = None
if opts.get('copies'):
endrev = None
if revs:
endrev = revs.max() + 1
- getrenamed = scmutil.getrenamedfn(repo, endrev=endrev)
+ getcopies = scmutil.getcopiesfn(repo, endrev=endrev)
ui.pager('log')
displayer = logcmdutil.changesetdisplayer(ui, repo, opts, differ,
@@ -3901,7 +3901,7 @@
displayfn = logcmdutil.displaygraphrevs
else:
displayfn = logcmdutil.displayrevs
- displayfn(ui, repo, revs, displayer, getrenamed)
+ displayfn(ui, repo, revs, displayer, getcopies)
@command('manifest',
[('r', 'rev', '', _('revision to display'), _('REV')),
--- a/mercurial/logcmdutil.py Wed Jun 19 09:59:45 2019 -0700
+++ b/mercurial/logcmdutil.py Wed Jun 19 10:19:32 2019 -0700
@@ -862,7 +862,7 @@
return templ.renderdefault(props)
return formatnode
-def displaygraph(ui, repo, dag, displayer, edgefn, getrenamed=None, props=None):
+def displaygraph(ui, repo, dag, displayer, edgefn, getcopies=None, props=None):
props = props or {}
formatnode = _graphnodeformatter(ui, displayer)
state = graphmod.asciistate()
@@ -890,13 +890,7 @@
for rev, type, ctx, parents in dag:
char = formatnode(repo, ctx)
- copies = None
- if getrenamed:
- copies = []
- for fn in ctx.files():
- rename = getrenamed(fn, ctx.rev())
- if rename:
- copies.append((fn, rename))
+ copies = getcopies(ctx) if getcopies else None
edges = edgefn(type, char, state, rev, parents)
firstedge = next(edges)
width = firstedge[2]
@@ -915,16 +909,10 @@
revdag = graphmod.dagwalker(repo, revs)
displaygraph(ui, repo, revdag, displayer, graphmod.asciiedges, getrenamed)
-def displayrevs(ui, repo, revs, displayer, getrenamed):
+def displayrevs(ui, repo, revs, displayer, getcopies):
for rev in revs:
ctx = repo[rev]
- copies = None
- if getrenamed is not None:
- copies = []
- for fn in ctx.files():
- rename = getrenamed(fn, rev)
- if rename:
- copies.append((fn, rename))
+ copies = getcopies(ctx) if getcopies else None
displayer.show(ctx, copies=copies)
displayer.flush(ctx)
displayer.close()