Code

Add gitmodules(5)
[git.git] / Documentation / git-bisect.txt
index 0bfb1525b82bc426302343eed5b4b64ba1fbf7a3..1072fb87d1fe38a74dc38e2d6886acfb44d9262b 100644 (file)
@@ -8,14 +8,14 @@ git-bisect - Find the change that introduced a bug by binary search
 
 SYNOPSIS
 --------
-'git bisect' <subcommand> <options> 
+'git bisect' <subcommand> <options>
 
 DESCRIPTION
 -----------
 The command takes various subcommands, and different options depending
 on the subcommand:
 
- git bisect start [<paths>...]
+ git bisect start [<bad> [<good>...]] [--] [<paths>...]
  git bisect bad <rev>
  git bisect good <rev>
  git bisect reset [<branch>]
@@ -28,13 +28,16 @@ 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.
 
+Basic bisect commands: start, bad, good
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
 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
+$ 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
@@ -65,6 +68,9 @@ 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".
 
+Bisect reset
+~~~~~~~~~~~~
+
 Oh, and then after you want to reset to the original head, do a
 
 ------------------------------------------------
@@ -76,6 +82,9 @@ 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).
 
+Bisect visualize
+~~~~~~~~~~~~~~~~
+
 During the bisection process, you can say
 
 ------------
@@ -84,6 +93,9 @@ $ git bisect visualize
 
 to see the currently remaining suspects in `gitk`.
 
+Bisect log and bisect replay
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
 The good/bad input is logged, and
 
 ------------
@@ -100,6 +112,9 @@ $ git bisect replay that-file
 if you find later you made a mistake telling good/bad about a
 revision.
 
+Avoiding to test a commit
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
 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
@@ -119,14 +134,31 @@ $ git reset --hard HEAD~3         # try 3 revs before what
 Then compile and test the one you chose to try. After that, tell
 bisect what the result was as usual.
 
+Cutting down bisection by giving more parameters to bisect start
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
 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
+$ git bisect start -- arch/i386 include/asm-i386
 ------------
 
+If you know beforehand more than one good commits, you can narrow the
+bisect space down without doing the whole tree checkout every time you
+give good commits. You give the bad revision immediately after `start`
+and then you give all the good revisions you have:
+
+------------
+$ git bisect start v2.6.20-rc6 v2.6.20-rc4 v2.6.20-rc1 --
+                   # v2.6.20-rc6 is bad
+                   # v2.6.20-rc4 and v2.6.20-rc1 are good
+------------
+
+Bisect run
+~~~~~~~~~~
+
 If you have a script that can tell if the current source code is good
 or bad, you can automatically bisect using:
 
@@ -168,4 +200,3 @@ Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
 GIT
 ---
 Part of the gitlink:git[7] suite
-