git-bisect(1)
=============

NAME
----
git-bisect - Find the change that introduced a bug


SYNOPSIS
--------
'git bisect' <subcommand> <options> 

DESCRIPTION
-----------
The command takes various subcommands, and different options
depending on the subcommand:

 git bisect start [<paths>...]
 git bisect bad <rev>
 git bisect good <rev>
 git bisect reset [<branch>]
 git bisect visualize
 git bisect replay <logfile>
 git bisect log

This command uses 'git-rev-list --bisect' option to help drive
the binary search process to find which change introduced a bug,
given an old "good" commit object name and a later "bad" commit
object name.

The way you use it is:

------------------------------------------------
$ git bisect start
$ git bisect bad			# Current version is bad
$ git bisect good v2.6.13-rc2		# v2.6.13-rc2 was the last version
					# tested that was good
------------------------------------------------

When you give at least one bad and one good versions, it will
bisect the revision tree and say something like:

------------------------------------------------
Bisecting: 675 revisions left to test after this
------------------------------------------------

and check out the state in the middle. Now, compile that kernel, and boot
it. Now, let's say that this booted kernel works fine, then just do

------------------------------------------------
$ git bisect good			# this one is good
------------------------------------------------

which will now say

------------------------------------------------
Bisecting: 337 revisions left to test after this
------------------------------------------------

and you continue along, compiling that one, testing it, and depending on
whether it is good or bad, you say "git bisect good" or "git bisect bad",
and ask for the next bisection.

Until you have no more left, and you'll have been left with the first bad
kernel rev in "refs/bisect/bad".

Oh, and then after you want to reset to the original head, do a

------------------------------------------------
$ git bisect reset
------------------------------------------------

to get back to the master branch, instead of being in one of the bisection
branches ("git bisect start" will do that for you too, actually: it will
reset the bisection state, and before it does that it checks that you're
not using some old bisection branch).

During the bisection process, you can say

------------
$ git bisect visualize
------------

to see the currently remaining suspects in `gitk`.

The good/bad input is logged, and `git bisect
log` shows what you have done so far.  You can truncate its
output somewhere and save it in a file, and run

------------
$ git bisect replay that-file
------------

if you find later you made a mistake telling good/bad about a
revision.

If in a middle of bisect session, you know what the bisect
suggested to try next is not a good one to test (e.g. the change
the commit introduces is known not to work in your environment
and you know it does not have anything to do with the bug you
are chasing), you may want to find a near-by commit and try that
instead.  It goes something like this:

------------
$ git bisect good/bad			# previous round was good/bad.
Bisecting: 337 revisions left to test after this
$ git bisect visualize			# oops, that is uninteresting.
$ git reset --hard HEAD~3		# try 3 revs before what
					# was suggested
------------

Then compile and test the one you chose to try.  After that,
tell bisect what the result was as usual.

You can further cut down the number of trials if you know what
part of the tree is involved in the problem you are tracking
down, by giving paths parameters when you say `bisect start`,
like this:

------------
$ git bisect start arch/i386 include/asm-i386
------------


Author
------
Written by Linus Torvalds <torvalds@osdl.org>

Documentation
-------------
Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the gitlink:git[7] suite

