mercurial/obsolete.py
changeset 24393 77eace2a63cb
parent 24335 d6440a5076a5
child 24927 cd0068232ec0
equal deleted inserted replaced
24392:dc7588ce06b3 24393:77eace2a63cb
  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())