hgext3rd/topic/evolvebits.py
changeset 2922 66357d4d03b2
parent 2694 8a222745a71c
child 3017 0884856a4143
equal deleted inserted replaced
2921:23c9600607e7 2922:66357d4d03b2
     1 import collections
     1 import collections
     2 from mercurial import obsolete
       
     3 
     2 
     4 successorssets = None
     3 from . import compat
     5 try:
       
     6     from mercurial import obsutil
       
     7     successorssets = getattr(obsutil, 'successorssets', None)
       
     8 except ImportError:
       
     9     pass
       
    10 
       
    11 if successorssets is None:
       
    12     successorssets = obsolete.successorssets
       
    13 
     4 
    14 # Copied from evolve 081605c2e9b6
     5 # Copied from evolve 081605c2e9b6
    15 
     6 
    16 def _orderrevs(repo, revs):
     7 def _orderrevs(repo, revs):
    17     """Compute an ordering to solve instability for the given revs
     8     """Compute an ordering to solve instability for the given revs
    80 
    71 
    81     if not p.obsolete():
    72     if not p.obsolete():
    82         return p.rev()
    73         return p.rev()
    83     obs = repo[p]
    74     obs = repo[p]
    84     ui = repo.ui
    75     ui = repo.ui
    85     newer = successorssets(repo, obs.node())
    76     newer = compat.successorssets(repo, obs.node())
    86     # search of a parent which is not killed
    77     # search of a parent which is not killed
    87     while not newer:
    78     while not newer:
    88         ui.debug("stabilize target %s is plain dead,"
    79         ui.debug("stabilize target %s is plain dead,"
    89                  " trying to stabilize on its parent\n" %
    80                  " trying to stabilize on its parent\n" %
    90                  obs)
    81                  obs)
    91         obs = obs.parents()[0]
    82         obs = obs.parents()[0]
    92         newer = successorssets(repo, obs.node())
    83         newer = compat.successorssets(repo, obs.node())
    93     if len(newer) > 1 or len(newer[0]) > 1:
    84     if len(newer) > 1 or len(newer[0]) > 1:
    94         raise MultipleSuccessorsError(newer)
    85         raise MultipleSuccessorsError(newer)
    95 
    86 
    96     return repo[newer[0][0]].rev()
    87     return repo[newer[0][0]].rev()
    97 
    88