# HG changeset patch # User Martin von Zweigbergk # Date 2014-11-11 18:16:54 # Node ID 37c57a7cf16083458017de54f6d75a1af336e901 # Parent 1c11393d5dfba293090f0f26a249d7dd953df2b3 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. diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -96,7 +96,12 @@ class basectx(object): 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)