comparison mercurial/revlog.py @ 117:2ac722ad1a9d

Make revision code slightly faster
author mpm@selenic.com
date Fri, 20 May 2005 17:36:02 -0800
parents e484cd5ec282
children c7a66f9752a4
comparison
equal deleted inserted replaced
116:e484cd5ec282 117:2ac722ad1a9d
192 if node == nullid: return "" 192 if node == nullid: return ""
193 if self.cache and self.cache[0] == node: return self.cache[2] 193 if self.cache and self.cache[0] == node: return self.cache[2]
194 194
195 text = None 195 text = None
196 rev = self.rev(node) 196 rev = self.rev(node)
197 base = self.base(rev) 197 start, length, base, link, p1, p2, node = self.index[rev]
198 start = self.start(base) 198 end = start + length
199 end = self.end(rev) 199 if base != rev: start = self.start(base)
200 200
201 if self.cache and self.cache[1] >= base and self.cache[1] < rev: 201 if self.cache and self.cache[1] >= base and self.cache[1] < rev:
202 base = self.cache[1] 202 base = self.cache[1]
203 start = self.start(base + 1) 203 start = self.start(base + 1)
204 text = self.cache[2] 204 text = self.cache[2]
218 bins.append(decompress(data[last:last + s])) 218 bins.append(decompress(data[last:last + s]))
219 last = last + s 219 last = last + s
220 220
221 text = mdiff.patches(text, bins) 221 text = mdiff.patches(text, bins)
222 222
223 (p1, p2) = self.parents(node)
224 if node != hash(text, p1, p2): 223 if node != hash(text, p1, p2):
225 raise IOError("integrity check failed on %s:%d" 224 raise IOError("integrity check failed on %s:%d"
226 % (self.datafile, rev)) 225 % (self.datafile, rev))
227 226
228 self.cache = (node, rev, text) 227 self.cache = (node, rev, text)