comparison hgext3rd/topic/evolvebits.py @ 2922:66357d4d03b2

topic: centralize compatibility logic between hg versions into compat module This patch can delay loading obsutil and obsolete modules until they are actually used at "hg topics" or so, if demandimport of Mercurial is enabled.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Sun, 10 Sep 2017 22:41:54 +0900
parents 8a222745a71c
children
comparison
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