comparison mercurial/utils/storageutil.py @ 49606:fa955e3f6aee stable

emitrevision: add a small closure to check if a base is usable We will make more use of this and make it more complex too.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 28 Nov 2022 15:48:51 +0100
parents d44e3c45f0e4
children 0bda07f34c01
comparison
equal deleted inserted replaced
49605:e45590649888 49606:fa955e3f6aee
389 prevrev = store.parentrevs(revs[0])[0] 389 prevrev = store.parentrevs(revs[0])[0]
390 390
391 # Set of revs available to delta against. 391 # Set of revs available to delta against.
392 available = set() 392 available = set()
393 393
394 def is_usable_base(rev):
395 return rev != nullrev and rev in available
396
394 for rev in revs: 397 for rev in revs:
395 if rev == nullrev: 398 if rev == nullrev:
396 continue 399 continue
397 400
398 node = fnode(rev) 401 node = fnode(rev)
418 # amounts to effectively copying data from storage and is 421 # amounts to effectively copying data from storage and is
419 # therefore the fastest. 422 # therefore the fastest.
420 elif deltaparentrev != nullrev: 423 elif deltaparentrev != nullrev:
421 # Base revision was already emitted in this group. We can 424 # Base revision was already emitted in this group. We can
422 # always safely use the delta. 425 # always safely use the delta.
423 if deltaparentrev in available: 426 if is_usable_base(deltaparentrev):
424 baserev = deltaparentrev 427 baserev = deltaparentrev
425 428
426 # Base revision is a parent that hasn't been emitted already. 429 # Base revision is a parent that hasn't been emitted already.
427 # Use it if we can assume the receiver has the parent revision. 430 # Use it if we can assume the receiver has the parent revision.
428 elif assumehaveparentrevisions and deltaparentrev in (p1rev, p2rev): 431 elif assumehaveparentrevisions and deltaparentrev in (p1rev, p2rev):