committablectx: simplify caching the status
authorSean Farley <sean.michael.farley@gmail.com>
Thu, 24 Apr 2014 17:31:20 -0500
changeset 21592 16f62b4203b1
parent 21591 660ef8ca8c3c
child 21593 b2d6bc6f9c3e
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'.
mercurial/context.py
--- 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):