equal
deleted
inserted
replaced
1162 obsstore = repo.obsstore |
1162 obsstore = repo.obsstore |
1163 newermap = {} |
1163 newermap = {} |
1164 for ctx in repo.set('(not public()) - obsolete()'): |
1164 for ctx in repo.set('(not public()) - obsolete()'): |
1165 mark = obsstore.precursors.get(ctx.node(), ()) |
1165 mark = obsstore.precursors.get(ctx.node(), ()) |
1166 toprocess = set(mark) |
1166 toprocess = set(mark) |
|
1167 seen = set() |
1167 while toprocess: |
1168 while toprocess: |
1168 prec = toprocess.pop()[0] |
1169 prec = toprocess.pop()[0] |
|
1170 if prec in seen: |
|
1171 continue # emergency cycle hanging prevention |
|
1172 seen.add(prec) |
1169 if prec not in newermap: |
1173 if prec not in newermap: |
1170 successorssets(repo, prec, newermap) |
1174 successorssets(repo, prec, newermap) |
1171 newer = [n for n in newermap[prec] if n] |
1175 newer = [n for n in newermap[prec] if n] |
1172 if len(newer) > 1: |
1176 if len(newer) > 1: |
1173 divergent.add(ctx.rev()) |
1177 divergent.add(ctx.rev()) |