[PATCH STABLE] annotate: always prepare ancestry context of base fctx (issue4600)
Yuya Nishihara
yuya at tcha.org
Thu Apr 16 14:13:04 UTC 2015
# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1429191233 -32400
# Thu Apr 16 22:33:53 2015 +0900
# Branch stable
# Node ID fba3dfd79fd4d763c7cf6eb2e94e20da4e158eec
# Parent 1784ca1483921babd792932d1e4575fda1c3359e
annotate: always prepare ancestry context of base fctx (issue4600)
This patch extends the workaround introduced by dd01834a696f. Even if the
base fctx is the same as intorrev, _ancestrycontext must be built for faster
_changeid lookup.
repo: https://hg.mozilla.org/releases/mozilla-beta
command: hg annotate -r 4954faa47dd0 gfx/thebes/gfxWindowsPlatform.cpp
before: 52.450 sec
after: 1.820 sec
diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -919,6 +919,7 @@ class basefilectx(object):
introrev = self.introrev()
if self.rev() != introrev:
base = self.filectx(self.filenode(), changeid=introrev)
+ if getattr(base, '_ancestrycontext', None) is None:
ac = self._repo.changelog.ancestors([introrev], inclusive=True)
base._ancestrycontext = ac
More information about the Mercurial-devel
mailing list