Mercurial > public > mercurial-scm > hg
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