movedirstate: get copies from dirstate before setting parents
authorMartin von Zweigbergk <martinvonz@google.com>
Fri, 27 Dec 2019 12:41:56 -0800
changeset 44038 0750cbffdb3b
parent 44037 98944715a02c
child 44039 f652b7ddc1d4
movedirstate: get copies from dirstate before setting parents Setting dirstate parents can modify the copies recorded in the dirstate when there are two dirstate parents. I don't think we ever call movedirstate() when there is more than one parent, but it seems clearer to get the copies from the dirstate first anyway. Differential Revision: https://phab.mercurial-scm.org/D7800
mercurial/scmutil.py
--- a/mercurial/scmutil.py	Thu Dec 12 14:31:11 2019 -0800
+++ b/mercurial/scmutil.py	Fri Dec 27 12:41:56 2019 -0800
@@ -1431,8 +1431,8 @@
     """
     oldctx = repo[b'.']
     ds = repo.dirstate
+    copies = dict(ds.copies())
     ds.setparents(newctx.node(), nullid)
-    copies = dict(ds.copies())
     s = newctx.status(oldctx, match=match)
     for f in s.modified:
         if ds[f] == b'r':