status: cache dirstate status in _dirstatestatus()
Since it's only the dirstate status we cache, it makes more sense to
cache it in the _dirstatestatus() method. Note that this change means
the dirstate status will also be cached when status is requested
between the working copy and some other revision, while we currently
only cache the result if exactly the status between the working copy
and its parent is requested.
--- a/mercurial/context.py Thu Oct 16 21:49:28 2014 -0700
+++ b/mercurial/context.py Thu Jan 08 13:12:44 2015 -0800
@@ -1495,6 +1495,15 @@
if fixup and listclean:
s.clean.extend(fixup)
+ if match.always():
+ # cache for performance
+ if s.unknown or s.ignored or s.clean:
+ # "_status" is cached with list*=False in the normal route
+ self._status = scmutil.status(s.modified, s.added, s.removed,
+ s.deleted, [], [], [])
+ else:
+ self._status = s
+
return s
def _buildstatus(self, other, s, match, listignored, listclean,
@@ -1515,14 +1524,6 @@
s = super(workingctx, self)._buildstatus(other, s, match,
listignored, listclean,
listunknown)
- elif match.always():
- # cache for performance
- if s.unknown or s.ignored or s.clean:
- # "_status" is cached with list*=False in the normal route
- self._status = scmutil.status(s.modified, s.added, s.removed,
- s.deleted, [], [], [])
- else:
- self._status = s
return s
def _matchstatus(self, other, match):