# HG changeset patch # User Augie Fackler # Date 2020-05-07 20:56:03 # Node ID 8c0c1161614efaaddf9b12a454d1419f62ceb60a # Parent 3b7aabd02e11fcfc015b3a90a0c52d971a7b8a83 diff: avoid going from contexts to nodes and back This will allow us to pass in-memory contexts that may not have a valid node to the diffing logic. Differential Revision: https://phab.mercurial-scm.org/D8503 diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2492,7 +2492,11 @@ def diff(ui, repo, *pats, **opts): node1, node2 = ctx1.node(), ctx2.node() if reverse: - node1, node2 = node2, node1 + ctxleft = ctx2 + ctxright = ctx1 + else: + ctxleft = ctx1 + ctxright = ctx2 diffopts = patch.diffallopts(ui, opts) m = scmutil.match(ctx2, pats, opts) @@ -2502,8 +2506,8 @@ def diff(ui, repo, *pats, **opts): ui, repo, diffopts, - repo[node1], - repo[node2], + ctxleft, + ctxright, m, stat=stat, listsubrepos=opts.get(b'subrepos'),