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 = |
|
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 |
|
|
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 |
|
|
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 |
|
|
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