bisect: only check merge bases when needed
authorChristian Couder <chriscool@tuxfamily.org>
Fri, 22 Aug 2008 03:52:29 +0000 (05:52 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 28 Aug 2008 01:08:06 +0000 (18:08 -0700)
commitc9c4e2d5a25bbf637780f9b83e74c2a26fb957f5
tree80b517a411a022eda5fdc20c47d864548c89f658
parentf821d0892173e4e46a71fef4d06995f7a81c9296
bisect: only check merge bases when needed

When one good revision is not an ancestor of the bad revision, the
merge bases between the good and the bad revision should be checked
to make sure that they are also good revisions.

A previous patch takes care of that, but it may check the merge bases
more often than really needed. In fact the previous patch did not try
to optimize this as much as possible because it is not so simple. So
this is the purpose of this patch.

One may think that when all the merge bases have been checked then
we can save a flag, so that we don't need to check the merge bases
again during the bisect process.

The problem is that the user may choose to checkout and test
something completely different from what the bisect process
suggested. In this case we have to check the merge bases again,
because there may be new merge bases relevant to the bisect
process.

That's why, in this patch, when we detect that the user tested
something else than what the bisect process suggested, we remove
the flag that says that we don't need to check the merge bases
again.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-bisect.sh
t/t6030-bisect-porcelain.sh