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