##// 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 fnode = store.node
375 fnode = store.node
376 frev = store.rev
376 frev = store.rev
377 parents = store.parentrevs
377
378
378 if nodesorder == b'nodes':
379 if nodesorder == b'nodes':
379 revs = [frev(n) for n in nodes]
380 revs = [frev(n) for n in nodes]
@@ -386,30 +387,28 b' def emitrevisions('
386 prevrev = None
387 prevrev = None
387
388
388 if deltamode == repository.CG_DELTAMODE_PREV or assumehaveparentrevisions:
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 available = set()
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 def is_usable_base(rev):
400 def is_usable_base(rev):
396 """Is a delta against this revision usable over the wire"""
401 """Is a delta against this revision usable over the wire"""
397 if rev == nullrev:
402 if rev == nullrev:
398 return False
403 return False
399 # Base revision was already emitted in this group.
404 return rev in emitted or rev in available
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
406
405
407 for rev in revs:
406 for rev in revs:
408 if rev == nullrev:
407 if rev == nullrev:
409 continue
408 continue
410
409
411 node = fnode(rev)
410 node = fnode(rev)
412 parents[:] = p1rev, p2rev = store.parentrevs(rev)
411 p1rev, p2rev = parents(rev)
413
412
414 if deltaparentfn:
413 if deltaparentfn:
415 deltaparentrev = deltaparentfn(rev)
414 deltaparentrev = deltaparentfn(rev)
@@ -481,7 +480,7 b' def emitrevisions('
481 baserev == nullrev and deltamode != repository.CG_DELTAMODE_PREV
480 baserev == nullrev and deltamode != repository.CG_DELTAMODE_PREV
482 ):
481 ):
483 revision = store.rawdata(node)
482 revision = store.rawdata(node)
484 available.add(rev)
483 emitted.add(rev)
485 else:
484 else:
486 if revdifffn:
485 if revdifffn:
487 delta = revdifffn(baserev, rev)
486 delta = revdifffn(baserev, rev)
@@ -490,7 +489,7 b' def emitrevisions('
490 store.rawdata(baserev), store.rawdata(rev)
489 store.rawdata(baserev), store.rawdata(rev)
491 )
490 )
492
491
493 available.add(rev)
492 emitted.add(rev)
494
493
495 serialized_sidedata = None
494 serialized_sidedata = None
496 sidedata_flags = (0, 0)
495 sidedata_flags = (0, 0)
General Comments 0
You need to be logged in to leave comments. Login now