equal
deleted
inserted
replaced
137 assert best_rev is not None |
137 assert best_rev is not None |
138 best_node = changelog.node(best_rev) |
138 best_node = changelog.node(best_rev) |
139 |
139 |
140 return ([best_node], tot, good) |
140 return ([best_node], tot, good) |
141 |
141 |
|
142 def extendrange(repo, state, nodes, good): |
|
143 # bisect is incomplete when it ends on a merge node and |
|
144 # one of the parent was not checked. |
|
145 parents = repo[nodes[0]].parents() |
|
146 if len(parents) > 1: |
|
147 if good: |
|
148 side = state['bad'] |
|
149 else: |
|
150 side = state['good'] |
|
151 num = len(set(i.node() for i in parents) & set(side)) |
|
152 if num == 1: |
|
153 return parents[0].ancestor(parents[1]) |
|
154 return None |
142 |
155 |
143 def load_state(repo): |
156 def load_state(repo): |
144 state = {'current': [], 'good': [], 'bad': [], 'skip': []} |
157 state = {'current': [], 'good': [], 'bad': [], 'skip': []} |
145 for l in repo.vfs.tryreadlines("bisect.state"): |
158 for l in repo.vfs.tryreadlines("bisect.state"): |
146 kind, node = l[:-1].split() |
159 kind, node = l[:-1].split() |