##// END OF EJS Templates
emitrevision: consider ancestors revision to emit as available base...
marmoute -
r50685:f463eb67 stable
parent child Browse files
Show More
@@ -374,6 +374,7 b' def emitrevisions('
374 374
375 375 fnode = store.node
376 376 frev = store.rev
377 parents = store.parentrevs
377 378
378 379 if nodesorder == b'nodes':
379 380 revs = [frev(n) for n in nodes]
@@ -386,30 +387,28 b' def emitrevisions('
386 387 prevrev = None
387 388
388 389 if deltamode == repository.CG_DELTAMODE_PREV or assumehaveparentrevisions:
389 prevrev = store.parentrevs(revs[0])[0]
390 prevrev = parents(revs[0])[0]
390 391
391 # Set of revs available to delta against.
392 # Sets of revs available to delta against.
393 emitted = set()
392 394 available = set()
393 parents = []
395 if assumehaveparentrevisions:
396 common_heads = set(p for r in revs for p in parents(r))
397 common_heads.difference_update(revs)
398 available = store.ancestors(common_heads, inclusive=True)
394 399
395 400 def is_usable_base(rev):
396 401 """Is a delta against this revision usable over the wire"""
397 402 if rev == nullrev:
398 403 return False
399 # Base revision was already emitted in this group.
400 if rev in available:
401 return True
402 # Base revision is a parent that hasn't been emitted already.
403 if assumehaveparentrevisions and rev in parents:
404 return True
405 return False
404 return rev in emitted or rev in available
406 405
407 406 for rev in revs:
408 407 if rev == nullrev:
409 408 continue
410 409
411 410 node = fnode(rev)
412 parents[:] = p1rev, p2rev = store.parentrevs(rev)
411 p1rev, p2rev = parents(rev)
413 412
414 413 if deltaparentfn:
415 414 deltaparentrev = deltaparentfn(rev)
@@ -481,7 +480,7 b' def emitrevisions('
481 480 baserev == nullrev and deltamode != repository.CG_DELTAMODE_PREV
482 481 ):
483 482 revision = store.rawdata(node)
484 available.add(rev)
483 emitted.add(rev)
485 484 else:
486 485 if revdifffn:
487 486 delta = revdifffn(baserev, rev)
@@ -490,7 +489,7 b' def emitrevisions('
490 489 store.rawdata(baserev), store.rawdata(rev)
491 490 )
492 491
493 available.add(rev)
492 emitted.add(rev)
494 493
495 494 serialized_sidedata = None
496 495 sidedata_flags = (0, 0)
General Comments 0
You need to be logged in to leave comments. Login now