diff -r 745e3b485632 -r 1e6fb8db666e mercurial/context.py --- a/mercurial/context.py Wed Dec 31 17:55:43 2014 +0900 +++ b/mercurial/context.py Wed Dec 31 17:55:43 2014 +0900 @@ -1634,6 +1634,18 @@ super(workingctx, self).__init__(repo, text, user, date, extra, changes) + def _buildstatus(self, other, s, match, + listignored, listclean, listunknown): + """Prevent ``workingctx._buildstatus`` from changing ``self._status`` + """ + s = self._dirstatestatus(match, listignored, listclean, listunknown) + if other != self._repo['.']: + # workingctx._buildstatus doesn't change self._status in this case + superself = super(workingcommitctx, self) + s = superself._buildstatus(other, s, match, + listignored, listclean, listunknown) + return s + class memctx(committablectx): """Use memctx to perform in-memory commits via localrepo.commitctx().