Mercurial > public > mercurial-scm > hg
comparison mercurial/changelog.py @ 28491:f57f7500a095
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
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sun, 06 Mar 2016 14:29:46 -0800 |
parents | 959eadae589a |
children | 837f1c437d58 |
comparison
equal
deleted
inserted
replaced
28490:959eadae589a | 28491:f57f7500a095 |
---|---|
154 'date', | 154 'date', |
155 '_rawdesc', | 155 '_rawdesc', |
156 'extra', | 156 'extra', |
157 'files', | 157 'files', |
158 '_rawmanifest', | 158 '_rawmanifest', |
159 'user', | 159 '_rawuser', |
160 ) | 160 ) |
161 | 161 |
162 def __new__(cls, text): | 162 def __new__(cls, text): |
163 if not text: | 163 if not text: |
164 return _changelogrevision( | 164 return _changelogrevision( |
189 self._rawdesc = text[doublenl + 2:] | 189 self._rawdesc = text[doublenl + 2:] |
190 | 190 |
191 nl1 = text.index('\n') | 191 nl1 = text.index('\n') |
192 self._rawmanifest = text[0:nl1] | 192 self._rawmanifest = text[0:nl1] |
193 | 193 |
194 nl2 = text.index('\n', nl1 + 1) | |
195 self._rawuser = text[nl1 + 1:nl2] | |
196 | |
194 l = text[:doublenl].split('\n') | 197 l = text[:doublenl].split('\n') |
195 self.user = encoding.tolocal(l[1]) | |
196 | 198 |
197 tdata = l[2].split(' ', 2) | 199 tdata = l[2].split(' ', 2) |
198 if len(tdata) != 3: | 200 if len(tdata) != 3: |
199 time = float(tdata[0]) | 201 time = float(tdata[0]) |
200 try: | 202 try: |
213 return self | 215 return self |
214 | 216 |
215 @property | 217 @property |
216 def manifest(self): | 218 def manifest(self): |
217 return bin(self._rawmanifest) | 219 return bin(self._rawmanifest) |
220 | |
221 @property | |
222 def user(self): | |
223 return encoding.tolocal(self._rawuser) | |
218 | 224 |
219 @property | 225 @property |
220 def description(self): | 226 def description(self): |
221 return encoding.tolocal(self._rawdesc) | 227 return encoding.tolocal(self._rawdesc) |
222 | 228 |