diff mercurial/context.py @ 23589:200215cdf7aa

memctx: calculate manifest correctly with newly-removed files (issue4470) Before this patch, "memctx._manifest" tries to get (and use normally) filectx also for newly-removed files, even though "memctx.filectx()" returns None for such files. To calculate manifest correctly even with newly-removed files, this patch does: - replace "man.iteritems()" for the loop by "self._status.modified" to avoid accessing itself to newly removed files this also reduces loop cost for large manifest. - remove files in "self._status.removed" from the manifest In this patch, amending is confirmed twice to examine both (1) newly removed files and (2) ones already removed in amended revision.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Wed, 17 Dec 2014 15:09:43 +0900
parents 87a76cff7147
children a4679a74df14
line wrap: on
line diff
--- a/mercurial/context.py	Wed Dec 17 15:09:43 2014 +0900
+++ b/mercurial/context.py	Wed Dec 17 15:09:43 2014 +0900
@@ -1649,6 +1649,10 @@
         for f in self._status.added:
             man[f] = revlog.hash(self[f].data(), nullid, nullid)
 
+        for f in self._status.removed:
+            if f in man:
+                del man[f]
+
         return man
 
     @propertycache