# HG changeset patch # User Gregory Szorc # Date 2016-03-06 22:29:46 # Node ID f57f7500a095fe4dfb31a84b4c39dbe606271955 # Parent 959eadae589a2fe7fec205180175434faae13a70 changelog: lazily parse user Same strategy as before. Revsets not accessing the user demonstrate a slight performance win: desc(bug) 0.887169 0.910400 0.895514 date(2015) 0.878797 0.870697 0.820987 extra(rebase_source) 0.865446 0.841644 0.823811 date(2015) or branch(default) 0.968276 0.945792 0.910981 diff --git a/mercurial/changelog.py b/mercurial/changelog.py --- a/mercurial/changelog.py +++ b/mercurial/changelog.py @@ -156,7 +156,7 @@ class changelogrevision(object): 'extra', 'files', '_rawmanifest', - 'user', + '_rawuser', ) def __new__(cls, text): @@ -191,8 +191,10 @@ class changelogrevision(object): nl1 = text.index('\n') self._rawmanifest = text[0:nl1] + nl2 = text.index('\n', nl1 + 1) + self._rawuser = text[nl1 + 1:nl2] + l = text[:doublenl].split('\n') - self.user = encoding.tolocal(l[1]) tdata = l[2].split(' ', 2) if len(tdata) != 3: @@ -217,6 +219,10 @@ class changelogrevision(object): return bin(self._rawmanifest) @property + def user(self): + return encoding.tolocal(self._rawuser) + + @property def description(self): return encoding.tolocal(self._rawdesc)