##// END OF EJS Templates
bisect: move the 'extendrange' to the 'hbisect' module...
Pierre-Yves David -
r30066:5f93737d default
parent child Browse files
Show More
@@ -835,20 +835,6 b' def bisect(ui, repo, rev=None, extra=Non'
835
835
836 Returns 0 on success.
836 Returns 0 on success.
837 """
837 """
838 def extendbisectrange(nodes, good):
839 # bisect is incomplete when it ends on a merge node and
840 # one of the parent was not checked.
841 parents = repo[nodes[0]].parents()
842 if len(parents) > 1:
843 if good:
844 side = state['bad']
845 else:
846 side = state['good']
847 num = len(set(i.node() for i in parents) & set(side))
848 if num == 1:
849 return parents[0].ancestor(parents[1])
850 return None
851
852 def print_result(nodes, good):
838 def print_result(nodes, good):
853 displayer = cmdutil.show_changeset(ui, repo, {})
839 displayer = cmdutil.show_changeset(ui, repo, {})
854 if len(nodes) == 1:
840 if len(nodes) == 1:
@@ -858,7 +844,7 b' def bisect(ui, repo, rev=None, extra=Non'
858 else:
844 else:
859 ui.write(_("The first bad revision is:\n"))
845 ui.write(_("The first bad revision is:\n"))
860 displayer.show(repo[nodes[0]])
846 displayer.show(repo[nodes[0]])
861 extendnode = extendbisectrange(nodes, good)
847 extendnode = hbisect.extendrange(repo, state, nodes, good)
862 if extendnode is not None:
848 if extendnode is not None:
863 ui.write(_('Not all ancestors of this changeset have been'
849 ui.write(_('Not all ancestors of this changeset have been'
864 ' checked.\nUse bisect --extend to continue the '
850 ' checked.\nUse bisect --extend to continue the '
@@ -977,7 +963,7 b' def bisect(ui, repo, rev=None, extra=Non'
977 nodes, changesets, good = hbisect.bisect(repo.changelog, state)
963 nodes, changesets, good = hbisect.bisect(repo.changelog, state)
978 if extend:
964 if extend:
979 if not changesets:
965 if not changesets:
980 extendnode = extendbisectrange(nodes, good)
966 extendnode = hbisect.extendrange(repo, state, nodes, good)
981 if extendnode is not None:
967 if extendnode is not None:
982 ui.write(_("Extending search to changeset %d:%s\n")
968 ui.write(_("Extending search to changeset %d:%s\n")
983 % (extendnode.rev(), extendnode))
969 % (extendnode.rev(), extendnode))
@@ -139,6 +139,19 b' def bisect(changelog, state):'
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': []}
General Comments 0
You need to be logged in to leave comments. Login now