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') |