changeset 23257:37c57a7cf160

context.status: explain "caching reasons" more fully Where we "load earliest manifest first for caching reasons", elaborate on what "caching reasons" refers to. Text provided by Matt in http://thread.gmane.org/gmane.comp.version-control.mercurial.devel/73235/focus=73578.
author Martin von Zweigbergk <martinvonz@google.com>
date Tue, 11 Nov 2014 10:16:54 -0800
parents 1c11393d5dfb
children 10697f29af2b
files mercurial/context.py
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/context.py	Tue Nov 11 10:35:06 2014 -0500
+++ b/mercurial/context.py	Tue Nov 11 10:16:54 2014 -0800
@@ -96,7 +96,12 @@
     def _buildstatus(self, other, s, match, listignored, listclean,
                      listunknown):
         """build a status with respect to another context"""
-        # load earliest manifest first for caching reasons
+        # Load earliest manifest first for caching reasons. More specifically,
+        # if you have revisions 1000 and 1001, 1001 is probably stored as a
+        # delta against 1000. Thus, if you read 1000 first, we'll reconstruct
+        # 1000 and cache it so that when you read 1001, we just need to apply a
+        # delta to what's in the cache. So that's one full reconstruction + one
+        # delta application.
         if self.rev() is not None and self.rev() < other.rev():
             self.manifest()
         mf1 = other._manifestmatches(match, s)