comparison 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
comparison
equal deleted inserted replaced
23588:87a76cff7147 23589:200215cdf7aa
1647 man[f] = revlog.hash(fctx.data(), p1node, p2node) 1647 man[f] = revlog.hash(fctx.data(), p1node, p2node)
1648 1648
1649 for f in self._status.added: 1649 for f in self._status.added:
1650 man[f] = revlog.hash(self[f].data(), nullid, nullid) 1650 man[f] = revlog.hash(self[f].data(), nullid, nullid)
1651 1651
1652 for f in self._status.removed:
1653 if f in man:
1654 del man[f]
1655
1652 return man 1656 return man
1653 1657
1654 @propertycache 1658 @propertycache
1655 def _status(self): 1659 def _status(self):
1656 """Calculate exact status from ``files`` specified at construction 1660 """Calculate exact status from ``files`` specified at construction