mercurial/hbisect.py
changeset 17424 e7cfe3587ea4
parent 16834 cafd8a8fb713
child 17537 31f32a96e1e3
equal deleted inserted replaced
17406:fc14953e8e34 17424:e7cfe3587ea4
   157 def get(repo, status):
   157 def get(repo, status):
   158     """
   158     """
   159     Return a list of revision(s) that match the given status:
   159     Return a list of revision(s) that match the given status:
   160 
   160 
   161     - ``good``, ``bad``, ``skip``: csets explicitly marked as good/bad/skip
   161     - ``good``, ``bad``, ``skip``: csets explicitly marked as good/bad/skip
   162     - ``goods``, ``bads``      : csets topologicaly good/bad
   162     - ``goods``, ``bads``      : csets topologically 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     - ``current``            : the cset currently being bisected
   168     """
   168     """
   169     state = load_state(repo)
   169     state = load_state(repo)
   170     if status in ('good', 'bad', 'skip', 'current'):
   170     if status in ('good', 'bad', 'skip', 'current'):
   171         return map(repo.changelog.rev, state[status])
   171         return map(repo.changelog.rev, state[status])
   172     else:
   172     else:
   173         # In the floowing sets, we do *not* call 'bisect()' with more
   173         # In the following sets, we do *not* call 'bisect()' with more
   174         # than one level of recusrsion, because that can be very, very
   174         # than one level of recursion, because that can be very, very
   175         # time consuming. Instead, we always develop the expression as
   175         # time consuming. Instead, we always develop the expression as
   176         # much as possible.
   176         # much as possible.
   177 
   177 
   178         # 'range' is all csets that make the bisection:
   178         # 'range' is all csets that make the bisection:
   179         #   - have a good ancestor and a bad descendant, or conversely
   179         #   - have a good ancestor and a bad descendant, or conversely
   198         # 'untested' is all cset that are- in 'range', but not in 'pruned'
   198         # 'untested' is all cset that are- in 'range', but not in 'pruned'
   199         untested = '( (%s) - (%s) )' % (range, pruned)
   199         untested = '( (%s) - (%s) )' % (range, pruned)
   200 
   200 
   201         # 'ignored' is all csets that were not used during the bisection
   201         # 'ignored' is all csets that were not used during the bisection
   202         # due to DAG topology, but may however have had an impact.
   202         # due to DAG topology, but may however have had an impact.
   203         # Eg., a branch merged between bads and goods, but whose branch-
   203         # E.g., a branch merged between bads and goods, but whose branch-
   204         # point is out-side of the range.
   204         # point is out-side of the range.
   205         iba = '::bisect(bad) - ::bisect(good)'  # Ignored bads' ancestors
   205         iba = '::bisect(bad) - ::bisect(good)'  # Ignored bads' ancestors
   206         iga = '::bisect(good) - ::bisect(bad)'  # Ignored goods' ancestors
   206         iga = '::bisect(good) - ::bisect(bad)'  # Ignored goods' ancestors
   207         ignored = '( ( (%s) | (%s) ) - (%s) )' % (iba, iga, range)
   207         ignored = '( ( (%s) | (%s) ) - (%s) )' % (iba, iga, range)
   208 
   208