Patchwork D6361: overlayworkingctx: don't include added-then-deleted files in memctx

login
register
mail settings
Submitter phabricator
Date May 10, 2019, 9:44 p.m.
Message ID <differential-rev-PHID-DREV-juhcmr3a5m3nsvxdvbzr-req@phab.mercurial-scm.org>
Download mbox | patch
Permalink /patch/40001/
State Superseded
Headers show

Comments

phabricator - May 10, 2019, 9:44 p.m.
martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  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.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D6361

AFFECTED FILES
  mercurial/context.py

CHANGE DETAILS




To: martinvonz, #hg-reviewers
Cc: mercurial-devel

Patch

diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -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,