Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/revlog.py @ 644:6ebe118280bd
Performance enhancements for manifest.add()
# HG changeset patch
# User mason@suse.com
Performance enhancements for manifest.add()
Improve manifest.add performance by using bisect to insert/remove
changed items into the manifest list. This also generates the
manifest delta directly based on the changes being made.
author | mason@suse.com |
---|---|
date | Wed, 06 Jul 2005 22:28:35 -0800 |
parents | 4fc63e22b1fe |
children | 08b65d66f3e7 |
comparison
equal
deleted
inserted
replaced
643:c9e159bb9a3d | 644:6ebe118280bd |
---|---|
265 % (self.datafile, rev)) | 265 % (self.datafile, rev)) |
266 | 266 |
267 self.cache = (node, rev, text) | 267 self.cache = (node, rev, text) |
268 return text | 268 return text |
269 | 269 |
270 def addrevision(self, text, transaction, link, p1=None, p2=None): | 270 def addrevision(self, text, transaction, link, p1=None, p2=None, d=None): |
271 if text is None: text = "" | 271 if text is None: text = "" |
272 if p1 is None: p1 = self.tip() | 272 if p1 is None: p1 = self.tip() |
273 if p2 is None: p2 = nullid | 273 if p2 is None: p2 = nullid |
274 | 274 |
275 node = hash(text, p1, p2) | 275 node = hash(text, p1, p2) |
282 | 282 |
283 if n: | 283 if n: |
284 base = self.base(t) | 284 base = self.base(t) |
285 start = self.start(base) | 285 start = self.start(base) |
286 end = self.end(t) | 286 end = self.end(t) |
287 prev = self.revision(self.tip()) | 287 if not d: |
288 d = self.diff(prev, text) | 288 prev = self.revision(self.tip()) |
289 d = self.diff(prev, text) | |
289 data = compress(d) | 290 data = compress(d) |
290 dist = end - start + len(data) | 291 dist = end - start + len(data) |
291 | 292 |
292 # full versions are inserted when the needed deltas | 293 # full versions are inserted when the needed deltas |
293 # become comparable to the uncompressed text | 294 # become comparable to the uncompressed text |