Mercurial > public > mercurial-scm > hg
comparison mercurial/hbisect.py @ 30066:5f93737d0ba8
bisect: move the 'extendrange' to the 'hbisect' module
We have a module ready to host any bisect logic. That logic was already isolated
in a function so we just migrate it as is.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Wed, 24 Aug 2016 04:16:07 +0200 |
parents | ee21ed7fc7a2 |
children | 6e88cd060ba2 |
comparison
equal
deleted
inserted
replaced
30065:ee21ed7fc7a2 | 30066:5f93737d0ba8 |
---|---|
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() |