equal
deleted
inserted
replaced
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 |