comparison mercurial/revlogutils/deltas.py @ 39517:cc85ebb68ff9

snapshot: turn _refinedgroups into a coroutine We are now almost ready to start adding refining logic.
author Boris Feld <boris.feld@octobus.net>
date Fri, 07 Sep 2018 11:17:34 -0400
parents 51cec7fb672e
children 993d7e2c8b79
comparison
equal deleted inserted replaced
39516:51cec7fb672e 39517:cc85ebb68ff9
587 deltas_limit = textlen * LIMIT_DELTA2TEXT 587 deltas_limit = textlen * LIMIT_DELTA2TEXT
588 588
589 tested = set([nullrev]) 589 tested = set([nullrev])
590 candidates = _refinedgroups(revlog, p1, p2, cachedelta) 590 candidates = _refinedgroups(revlog, p1, p2, cachedelta)
591 while True: 591 while True:
592 temptative = next(candidates) 592 temptative = candidates.send(good)
593 if temptative is None: 593 if temptative is None:
594 break 594 break
595 group = [] 595 group = []
596 for rev in temptative: 596 for rev in temptative:
597 # skip over empty delta (no need to include them in a chain) 597 # skip over empty delta (no need to include them in a chain)
616 if group: 616 if group:
617 # XXX: in the sparse revlog case, group can become large, 617 # XXX: in the sparse revlog case, group can become large,
618 # impacting performances. Some bounding or slicing mecanism 618 # impacting performances. Some bounding or slicing mecanism
619 # would help to reduce this impact. 619 # would help to reduce this impact.
620 good = yield tuple(group) 620 good = yield tuple(group)
621 if good is not None:
622 break
623 yield None 621 yield None
624 622
625 def _findsnapshots(revlog, cache, start_rev): 623 def _findsnapshots(revlog, cache, start_rev):
626 """find snapshot from start_rev to tip""" 624 """find snapshot from start_rev to tip"""
627 deltaparent = revlog.deltaparent 625 deltaparent = revlog.deltaparent