# HG changeset patch # User Martin von Zweigbergk # Date 2019-05-10 21:27:22 # Node ID e79aeb518aa18ff9d2e4046c99022a336b5bdf62 # Parent 83b225fbd78827c5f08489f56bd645810becd635 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 diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -2055,7 +2055,7 @@ class overlayworkingctx(committablectx): 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,