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):