copies: get working copy parents from wctx, not dirstate, to make in-mem work
Before this patch, `run-tests.py test-rebase-conflicts.t
--extra-config-opt rebase.experimental.inmemory=1` would have some
lines that say "searching for copies back to rev 3" changed to
"... rev 1". I don't know of a better way of testing this patch than
doing that manually. There are many other differences, so we're not
ready to use #testcases syntax on the entire test-rebase-conflicts.t
yet.
Differential Revision: https://phab.mercurial-scm.org/D5596
--- a/mercurial/copies.py Tue Jan 15 16:50:50 2019 -0800
+++ b/mercurial/copies.py Tue Jan 15 16:55:20 2019 -0800
@@ -45,11 +45,15 @@
# - quit when interesting revs is zero
cl = repo.changelog
+ wdirparents = None
a = ctxa.rev()
b = ctxb.rev()
if a is None:
+ wdirparents = (ctxa.p1(), ctxa.p2())
a = node.wdirrev
if b is None:
+ assert not wdirparents
+ wdirparents = (ctxb.p1(), ctxb.p2())
b = node.wdirrev
side = {a: -1, b: 1}
@@ -61,7 +65,7 @@
while interesting:
r = -heapq.heappop(visit)
if r == node.wdirrev:
- parents = [cl.rev(p) for p in repo.dirstate.parents()]
+ parents = [pctx.rev() for pctx in wdirparents]
else:
parents = cl.parentrevs(r)
if parents[1] == node.nullrev: