equal
deleted
inserted
replaced
1021 """the set of rev that compete to be the final successors of some revision. |
1021 """the set of rev that compete to be the final successors of some revision. |
1022 """ |
1022 """ |
1023 divergent = set() |
1023 divergent = set() |
1024 obsstore = repo.obsstore |
1024 obsstore = repo.obsstore |
1025 newermap = {} |
1025 newermap = {} |
1026 for ctx in repo.set('(not public()) - obsolete()'): |
1026 tonode = repo.changelog.node |
1027 mark = obsstore.predecessors.get(ctx.node(), ()) |
1027 for rev in repo.revs('(not public()) - obsolete()'): |
|
1028 node = tonode(rev) |
|
1029 mark = obsstore.predecessors.get(node, ()) |
1028 toprocess = set(mark) |
1030 toprocess = set(mark) |
1029 seen = set() |
1031 seen = set() |
1030 while toprocess: |
1032 while toprocess: |
1031 prec = toprocess.pop()[0] |
1033 prec = toprocess.pop()[0] |
1032 if prec in seen: |
1034 if prec in seen: |
1034 seen.add(prec) |
1036 seen.add(prec) |
1035 if prec not in newermap: |
1037 if prec not in newermap: |
1036 obsutil.successorssets(repo, prec, cache=newermap) |
1038 obsutil.successorssets(repo, prec, cache=newermap) |
1037 newer = [n for n in newermap[prec] if n] |
1039 newer = [n for n in newermap[prec] if n] |
1038 if len(newer) > 1: |
1040 if len(newer) > 1: |
1039 divergent.add(ctx.rev()) |
1041 divergent.add(rev) |
1040 break |
1042 break |
1041 toprocess.update(obsstore.predecessors.get(prec, ())) |
1043 toprocess.update(obsstore.predecessors.get(prec, ())) |
1042 return divergent |
1044 return divergent |
1043 |
1045 |
1044 |
1046 |