comparison mercurial/changelog.py @ 35308:137a08d82232

transaction: build changes['revs'] as range instead of a set Revisions are added consecutively, so a range can easily represent them in the changes list. This saves around 45 Bytes / revision on 64bit platforms and reduces the memory footprint of issue5691 by 15MB. Don't copy changes['revs'] in getobsoleted. Ranges have a very efficient contains implementation already. Differential Revision: https://phab.mercurial-scm.org/D1615
author Joerg Sonnenberger <joerg@bec.de>
date Fri, 08 Dec 2017 01:23:34 +0100
parents 50474f0b3f1b
children 8810f0643fa1
comparison
equal deleted inserted replaced
35307:4caafe280488 35308:137a08d82232
539 rev = len(self) 539 rev = len(self)
540 node = super(changelog, self)._addrevision(node, rawtext, transaction, 540 node = super(changelog, self)._addrevision(node, rawtext, transaction,
541 *args, **kwargs) 541 *args, **kwargs)
542 revs = transaction.changes.get('revs') 542 revs = transaction.changes.get('revs')
543 if revs is not None: 543 if revs is not None:
544 revs.add(rev) 544 if revs:
545 assert revs[-1] + 1 == rev
546 revs = xrange(revs[0], rev + 1)
547 else:
548 revs = xrange(rev, rev + 1)
549 transaction.changes['revs'] = revs
545 return node 550 return node