copies: get working copy parents from wctx, not dirstate, to make in-mem work
authorMartin von Zweigbergk <martinvonz@google.com>
Tue, 15 Jan 2019 16:55:20 -0800
changeset 41394 75e753a26806
parent 41393 dc50121126ae
child 41395 9087513df412
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
mercurial/copies.py
--- 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: