##// END OF EJS Templates
emitrevision: consider ancestors revision to emit as available base...
marmoute -
r50567:e92de86c default
parent child Browse files
Show More
@@ -379,6 +379,7 b' def emitrevisions('
379 379
380 380 fnode = store.node
381 381 frev = store.rev
382 parents = store.parentrevs
382 383
383 384 if nodesorder == b'nodes':
384 385 revs = [frev(n) for n in nodes]
@@ -391,23 +392,21 b' def emitrevisions('
391 392 prevrev = None
392 393
393 394 if deltamode == repository.CG_DELTAMODE_PREV or assumehaveparentrevisions:
394 prevrev = store.parentrevs(revs[0])[0]
395 prevrev = parents(revs[0])[0]
395 396
396 # Set of revs available to delta against.
397 # Sets of revs available to delta against.
398 emitted = set()
397 399 available = set()
398 parents = []
400 if assumehaveparentrevisions:
401 common_heads = set(p for r in revs for p in parents(r))
402 common_heads.difference_update(revs)
403 available = store.ancestors(common_heads, inclusive=True)
399 404
400 405 def is_usable_base(rev):
401 406 """Is a delta against this revision usable over the wire"""
402 407 if rev == nullrev:
403 408 return False
404 # Base revision was already emitted in this group.
405 if rev in available:
406 return True
407 # Base revision is a parent that hasn't been emitted already.
408 if assumehaveparentrevisions and rev in parents:
409 return True
410 return False
409 return rev in emitted or rev in available
411 410
412 411 for rev in revs:
413 412 if rev == nullrev:
@@ -418,7 +417,7 b' def emitrevisions('
418 417 debug_info['revision-total'] += 1
419 418
420 419 node = fnode(rev)
421 parents[:] = p1rev, p2rev = store.parentrevs(rev)
420 p1rev, p2rev = parents(rev)
422 421
423 422 if debug_info is not None:
424 423 if p1rev != p2rev and p1rev != nullrev and p2rev != nullrev:
@@ -531,7 +530,7 b' def emitrevisions('
531 530 debug_info['computed-delta'] += 1 # close enough
532 531 debug_info['delta-full'] += 1
533 532 revision = store.rawdata(node)
534 available.add(rev)
533 emitted.add(rev)
535 534 else:
536 535 if revdifffn:
537 536 if debug_info is not None:
@@ -571,7 +570,7 b' def emitrevisions('
571 570 store.rawdata(baserev), store.rawdata(rev)
572 571 )
573 572
574 available.add(rev)
573 emitted.add(rev)
575 574
576 575 serialized_sidedata = None
577 576 sidedata_flags = (0, 0)
General Comments 0
You need to be logged in to leave comments. Login now