[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