Mercurial > public > mercurial-scm > hg
comparison mercurial/obsutil.py @ 39301:5763216ba311
transaction: remember original len(repo) instead of tracking added revs (API)
It's silly to keep updating xrange(len(changelog), len(changelog) + 1) for
each added revision. Instead, let's simply remember the first revision to
be added.
The test output slightly changed as the branch cache is also warmed up by
stream clone, which seems more consistent.
.. api::
``tr.changes['revs']`` is replaced by ``tr.changes['origrepolen']`` which
is the first revision number to be added.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 25 Aug 2018 15:28:48 +0900 |
parents | 52e6171ec822 |
children | 93175cba7edd |
comparison
equal
deleted
inserted
replaced
39300:52e6171ec822 | 39301:5763216ba311 |
---|---|
463 torev = repo.unfiltered().changelog.nodemap.get | 463 torev = repo.unfiltered().changelog.nodemap.get |
464 phase = repo._phasecache.phase | 464 phase = repo._phasecache.phase |
465 succsmarkers = repo.obsstore.successors.get | 465 succsmarkers = repo.obsstore.successors.get |
466 public = phases.public | 466 public = phases.public |
467 addedmarkers = tr.changes.get('obsmarkers') | 467 addedmarkers = tr.changes.get('obsmarkers') |
468 addedrevs = tr.changes['revs'] | 468 origrepolen = tr.changes['origrepolen'] |
469 seenrevs = set() | 469 seenrevs = set() |
470 obsoleted = set() | 470 obsoleted = set() |
471 for mark in addedmarkers: | 471 for mark in addedmarkers: |
472 node = mark[0] | 472 node = mark[0] |
473 rev = torev(node) | 473 rev = torev(node) |
474 if rev is None or rev in seenrevs or rev in addedrevs: | 474 if rev is None or rev in seenrevs or rev >= origrepolen: |
475 continue | 475 continue |
476 seenrevs.add(rev) | 476 seenrevs.add(rev) |
477 if phase(repo, rev) == public: | 477 if phase(repo, rev) == public: |
478 continue | 478 continue |
479 if set(succsmarkers(node) or []).issubset(addedmarkers): | 479 if set(succsmarkers(node) or []).issubset(addedmarkers): |