--- a/hgext/evolve.py Tue Oct 23 16:36:29 2012 +0200
+++ b/hgext/evolve.py Tue Oct 23 16:49:29 2012 +0200
@@ -933,28 +933,6 @@
-def newerversion(repo, obs):
- """Return the newer version of an obsolete changeset"""
- toproceed = set([(obs,)])
- # XXX known optimization available
- newer = set()
- objectrels = repo.obsstore.precursors
- while toproceed:
- current = toproceed.pop()
- assert len(current) <= 1, 'splitting not handled yet. %r' % current
- current = [n for n in current if n != nullid]
- if current:
- n, = current
- if n in objectrels:
- markers = objectrels[n]
- for mark in markers:
- toproceed.add(tuple(mark[1]))
- else:
- newer.add(tuple(current))
- else:
- newer.add(())
- return sorted(newer)
-
#####################################################################
### Extending revset and template ###
@@ -1568,13 +1546,13 @@
if not obs.obsolete():
obs = orig.parents()[1]
assert obs.obsolete()
- newer = newerversion(repo, obs.node())
+ newer = successorssets(repo, obs.node())
# search of a parent which is not killed
- while newer == [()]:
+ while not newer or newer == [()]:
ui.debug("stabilize target %s is plain dead,"
" trying to stabilize on its parent")
obs = obs.parents()[0]
- newer = newerversion(repo, obs.node())
+ newer = successorssets(repo, obs.node())
if len(newer) > 1:
ui.write_err(_("conflict rewriting. can't choose destination\n"))
return 2