Mercurial > hg-stable
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 |