397 if x != nullrev and x in seen: |
397 if x != nullrev and x in seen: |
398 seen.add(i) |
398 seen.add(i) |
399 yield i |
399 yield i |
400 break |
400 break |
401 |
401 |
402 def findmissing(self, common=None, heads=None): |
402 def findcommonmissing(self, common=None, heads=None): |
403 """Return the ancestors of heads that are not ancestors of common. |
403 """Return a tuple of the ancestors of common and the ancestors of heads |
404 |
404 that are not ancestors of common. |
405 More specifically, return a list of nodes N such that every N |
405 |
406 satisfies the following constraints: |
406 More specifically, the second element is a list of nodes N such that |
|
407 every N satisfies the following constraints: |
407 |
408 |
408 1. N is an ancestor of some node in 'heads' |
409 1. N is an ancestor of some node in 'heads' |
409 2. N is not an ancestor of any node in 'common' |
410 2. N is not an ancestor of any node in 'common' |
410 |
411 |
411 The list is sorted by revision number, meaning it is |
412 The list is sorted by revision number, meaning it is |
439 for p in self.parentrevs(r): |
440 for p in self.parentrevs(r): |
440 if p not in has: |
441 if p not in has: |
441 visit.append(p) |
442 visit.append(p) |
442 missing = list(missing) |
443 missing = list(missing) |
443 missing.sort() |
444 missing.sort() |
444 return [self.node(r) for r in missing] |
445 return has, [self.node(r) for r in missing] |
|
446 |
|
447 def findmissing(self, common=None, heads=None): |
|
448 """Return the ancestors of heads that are not ancestors of common. |
|
449 |
|
450 More specifically, return a list of nodes N such that every N |
|
451 satisfies the following constraints: |
|
452 |
|
453 1. N is an ancestor of some node in 'heads' |
|
454 2. N is not an ancestor of any node in 'common' |
|
455 |
|
456 The list is sorted by revision number, meaning it is |
|
457 topologically sorted. |
|
458 |
|
459 'heads' and 'common' are both lists of node IDs. If heads is |
|
460 not supplied, uses all of the revlog's heads. If common is not |
|
461 supplied, uses nullid.""" |
|
462 _common, missing = self.findcommonmissing(common, heads) |
|
463 return missing |
445 |
464 |
446 def nodesbetween(self, roots=None, heads=None): |
465 def nodesbetween(self, roots=None, heads=None): |
447 """Return a topological path from 'roots' to 'heads'. |
466 """Return a topological path from 'roots' to 'heads'. |
448 |
467 |
449 Return a tuple (nodes, outroots, outheads) where 'nodes' is a |
468 Return a tuple (nodes, outroots, outheads) where 'nodes' is a |