overlayworkingctx: don't include added-then-deleted files in memctx
authorMartin von Zweigbergk <martinvonz@google.com>
Fri, 10 May 2019 14:27:22 -0700
changeset 42290 e79aeb518aa1
parent 42289 83b225fbd788
child 42291 a13b30555ffb
overlayworkingctx: don't include added-then-deleted files in memctx If a file (such as a .orig file) is temporarily added to the overlayworkingctx and then deleted, it's still going to be in the _cache dict. In tomemctx(), we created the list of files from _cache.keys(), so the memctx.files() would include the temporary file. That was fine because the list of files was only used in localrepo.commitctx() (I think), where there's an extra filtering of incorrectly removed files (annotated with an inaccurate "update manifest" comment). I'd like to call memctx.files() in another case, but first we need to make it accurate. Differential Revision: https://phab.mercurial-scm.org/D6361
mercurial/context.py
--- a/mercurial/context.py	Fri May 10 10:23:46 2019 -0700
+++ b/mercurial/context.py	Fri May 10 14:27:22 2019 -0700
@@ -2055,7 +2055,7 @@
         else:
             parents = (self._repo[parents[0]], self._repo[parents[1]])
 
-        files = self._cache.keys()
+        files = self.files()
         def getfile(repo, memctx, path):
             if self._cache[path]['exists']:
                 return memfilectx(repo, memctx, path,