changeset 21592:16f62b4203b1

committablectx: simplify caching the status Previously, workingctx had custom variables for the unknown, ignored, and clean list of files of status. These then got moved to committablectx and, after the refactoring of localrepo.status, are no longer needed. We, therefore, simplify the whole mess. As a bonus, we are able to remove the need for having 'assert'.
author Sean Farley <sean.michael.farley@gmail.com>
date Thu, 24 Apr 2014 17:31:20 -0500
parents 660ef8ca8c3c
children b2d6bc6f9c3e
files mercurial/context.py
diffstat 1 files changed, 9 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/context.py	Wed Apr 23 16:08:20 2014 -0500
+++ b/mercurial/context.py	Thu Apr 24 17:31:20 2014 -0500
@@ -892,14 +892,7 @@
         if user:
             self._user = user
         if changes:
-            self._status = list(changes[:4])
-            self._unknown = changes[4]
-            self._ignored = changes[5]
-            self._clean = changes[6]
-        else:
-            self._unknown = None
-            self._ignored = None
-            self._clean = None
+            self._status = changes
 
         self._extra = {}
         if extra:
@@ -974,7 +967,7 @@
 
         copied = self._repo.dirstate.copies()
         ff = self._flagfunc
-        modified, added, removed, deleted = self._status
+        modified, added, removed, deleted = self._status[:4]
         for i, l in (("a", added), ("m", modified)):
             for f in l:
                 orig = copied.get(f, f)
@@ -992,7 +985,7 @@
 
     @propertycache
     def _status(self):
-        return self._repo.status()[:4]
+        return self._repo.status()
 
     @propertycache
     def _user(self):
@@ -1023,14 +1016,11 @@
     def deleted(self):
         return self._status[3]
     def unknown(self):
-        assert self._unknown is not None  # must call status first
-        return self._unknown
+        return self._status[4]
     def ignored(self):
-        assert self._ignored is not None  # must call status first
-        return self._ignored
+        return self._status[5]
     def clean(self):
-        assert self._clean is not None  # must call status first
-        return self._clean
+        return self._status[6]
     def branch(self):
         return encoding.tolocal(self._extra['branch'])
     def closesbranch(self):
@@ -1395,20 +1385,10 @@
         listignored, listclean, listunknown = ignored, clean, unknown
         s = self._dirstatestatus(match=match, ignored=listignored,
                                  clean=listclean, unknown=listunknown)
-        modified, added, removed, deleted, unknown, ignored, clean = s
 
-        modified = self._filtersuspectsymlink(modified)
-
-        self._unknown = self._ignored = self._clean = None
-        if listunknown:
-            self._unknown = unknown
-        if listignored:
-            self._ignored = ignored
-        if listclean:
-            self._clean = clean
-        self._status = modified, added, removed, deleted
-
-        return modified, added, removed, deleted, unknown, ignored, clean
+        s[0] = self._filtersuspectsymlink(s[0])
+        self._status = s
+        return s
 
 
 class committablefilectx(basefilectx):