2445 data read from obsolescence markers""" |
2445 data read from obsolescence markers""" |
2446 if not obsolete.isenabled(repo, obsolete.createmarkersopt): |
2446 if not obsolete.isenabled(repo, obsolete.createmarkersopt): |
2447 return oldreplacements |
2447 return oldreplacements |
2448 |
2448 |
2449 unfi = repo.unfiltered() |
2449 unfi = repo.unfiltered() |
2450 nm = unfi.changelog.nodemap |
2450 get_rev = unfi.changelog.index.get_rev |
2451 obsstore = repo.obsstore |
2451 obsstore = repo.obsstore |
2452 newreplacements = list(oldreplacements) |
2452 newreplacements = list(oldreplacements) |
2453 oldsuccs = [r[1] for r in oldreplacements] |
2453 oldsuccs = [r[1] for r in oldreplacements] |
2454 # successors that have already been added to succstocheck once |
2454 # successors that have already been added to succstocheck once |
2455 seensuccs = set().union( |
2455 seensuccs = set().union( |
2456 *oldsuccs |
2456 *oldsuccs |
2457 ) # create a set from an iterable of tuples |
2457 ) # create a set from an iterable of tuples |
2458 succstocheck = list(seensuccs) |
2458 succstocheck = list(seensuccs) |
2459 while succstocheck: |
2459 while succstocheck: |
2460 n = succstocheck.pop() |
2460 n = succstocheck.pop() |
2461 missing = nm.get(n) is None |
2461 missing = get_rev(n) is None |
2462 markers = obsstore.successors.get(n, ()) |
2462 markers = obsstore.successors.get(n, ()) |
2463 if missing and not markers: |
2463 if missing and not markers: |
2464 # dead end, mark it as such |
2464 # dead end, mark it as such |
2465 newreplacements.append((n, ())) |
2465 newreplacements.append((n, ())) |
2466 for marker in markers: |
2466 for marker in markers: |