mercurial/hbisect.py
changeset 16647 14913fcb30c6
parent 15406 1f677c7e494d
child 16803 107a3270a24a
equal deleted inserted replaced
16646:a1dcd842ce17 16647:14913fcb30c6
   130 
   130 
   131     return ([best_node], tot, good)
   131     return ([best_node], tot, good)
   132 
   132 
   133 
   133 
   134 def load_state(repo):
   134 def load_state(repo):
   135     state = {'good': [], 'bad': [], 'skip': []}
   135     state = {'current': [], 'good': [], 'bad': [], 'skip': []}
   136     if os.path.exists(repo.join("bisect.state")):
   136     if os.path.exists(repo.join("bisect.state")):
   137         for l in repo.opener("bisect.state"):
   137         for l in repo.opener("bisect.state"):
   138             kind, node = l[:-1].split()
   138             kind, node = l[:-1].split()
   139             node = repo.lookup(node)
   139             node = repo.lookup(node)
   140             if kind not in state:
   140             if kind not in state:
   162     - ``goods``, ``bads``      : csets topologicaly good/bad
   162     - ``goods``, ``bads``      : csets topologicaly good/bad
   163     - ``range``              : csets taking part in the bisection
   163     - ``range``              : csets taking part in the bisection
   164     - ``pruned``             : csets that are goods, bads or skipped
   164     - ``pruned``             : csets that are goods, bads or skipped
   165     - ``untested``           : csets whose fate is yet unknown
   165     - ``untested``           : csets whose fate is yet unknown
   166     - ``ignored``            : csets ignored due to DAG topology
   166     - ``ignored``            : csets ignored due to DAG topology
       
   167     - ``current``            : the cset currently being bisected
   167     """
   168     """
   168     state = load_state(repo)
   169     state = load_state(repo)
   169     if status in ('good', 'bad', 'skip'):
   170     if status in ('good', 'bad', 'skip', 'current'):
   170         return [repo.changelog.rev(n) for n in state[status]]
   171         return map(repo.changelog.rev, state[status])
   171     else:
   172     else:
   172         # In the floowing sets, we do *not* call 'bisect()' with more
   173         # In the floowing sets, we do *not* call 'bisect()' with more
   173         # than one level of recusrsion, because that can be very, very
   174         # than one level of recusrsion, because that can be very, very
   174         # time consuming. Instead, we always develop the expression as
   175         # time consuming. Instead, we always develop the expression as
   175         # much as possible.
   176         # much as possible.
   231         # i18n: bisect changeset status
   232         # i18n: bisect changeset status
   232         return _('bad')
   233         return _('bad')
   233     if rev in get(repo, 'skip'):
   234     if rev in get(repo, 'skip'):
   234         # i18n: bisect changeset status
   235         # i18n: bisect changeset status
   235         return _('skipped')
   236         return _('skipped')
   236     if rev in get(repo, 'untested'):
   237     if rev in get(repo, 'untested') or rev in get(repo, 'current'):
   237         # i18n: bisect changeset status
   238         # i18n: bisect changeset status
   238         return _('untested')
   239         return _('untested')
   239     if rev in get(repo, 'ignored'):
   240     if rev in get(repo, 'ignored'):
   240         # i18n: bisect changeset status
   241         # i18n: bisect changeset status
   241         return _('ignored')
   242         return _('ignored')