From 9d79b7e95d9acf07ff1479f41faa860503ce280e Mon Sep 17 00:00:00 2001 From: Michael J Gruber Date: Tue, 15 Mar 2011 22:24:55 +0100 Subject: git-bisect.txt: streamline run presentation Streamline the presentation of "bisect run" by removing one example which does not introduce new concepts. Signed-off-by: Michael J Gruber Signed-off-by: Junio C Hamano diff --git a/Documentation/git-bisect.txt b/Documentation/git-bisect.txt index c39d957..47e8b1e 100644 --- a/Documentation/git-bisect.txt +++ b/Documentation/git-bisect.txt @@ -274,53 +274,35 @@ $ git bisect start HEAD origin -- # HEAD is bad, origin is good $ git bisect run make test # "make test" builds and tests ------------ -* Automatically bisect a broken test suite: -+ ------------- -$ cat ~/test.sh -#!/bin/sh -make || exit 125 # this skips broken builds -make test # "make test" runs the test suite -$ git bisect start v1.3 v1.1 -- # v1.3 is bad, v1.1 is good -$ git bisect run ~/test.sh ------------- -+ -Here we use a "test.sh" custom script. In this script, if "make" -fails, we skip the current commit. -+ -It is safer to use a custom script outside the repository to prevent -interactions between the bisect, make and test processes and the -script. -+ -"make test" should "exit 0", if the test suite passes, and -"exit 1" otherwise. - * Automatically bisect a broken test case: + ------------ $ cat ~/test.sh #!/bin/sh make || exit 125 # this skips broken builds -~/check_test_case.sh # does the test case passes ? +~/check_test_case.sh # does the test case pass? $ git bisect start HEAD HEAD~10 -- # culprit is among the last 10 $ git bisect run ~/test.sh ------------ + -Here "check_test_case.sh" should "exit 0" if the test case passes, +Here we use a "test.sh" custom script. In this script, if "make" +fails, we skip the current commit. +"check_test_case.sh" should "exit 0" if the test case passes, and "exit 1" otherwise. + -It is safer if both "test.sh" and "check_test_case.sh" scripts are +It is safer if both "test.sh" and "check_test_case.sh" are outside the repository to prevent interactions between the bisect, make and test processes and the scripts. -* Automatically bisect a broken test suite: +* Automatically bisect a broken test case: + ------------ $ git bisect start HEAD HEAD~10 -- # culprit is among the last 10 $ git bisect run sh -c "make || exit 125; ~/check_test_case.sh" ------------ + -Does the same as the previous example, but on a single line. +This shows that you can do without a run script if you write the test +on a single line. Author ------ -- cgit v0.10.2-6-g49f6 From e235b9168d8df2bc00ca2c77703ce1a98935c906 Mon Sep 17 00:00:00 2001 From: Michael J Gruber Date: Tue, 15 Mar 2011 22:24:56 +0100 Subject: git-bisect.txt: example for bisecting with hot-fix Give an example on how to bisect when older revisions need a hot-fix to build, run or test. Triggered by the binutils/kernel issue at http://thread.gmane.org/gmane.comp.gnu.binutils/52601/focus=1112779 Signed-off-by: Michael J Gruber Signed-off-by: Junio C Hamano diff --git a/Documentation/git-bisect.txt b/Documentation/git-bisect.txt index 47e8b1e..989e223 100644 --- a/Documentation/git-bisect.txt +++ b/Documentation/git-bisect.txt @@ -294,6 +294,39 @@ It is safer if both "test.sh" and "check_test_case.sh" are outside the repository to prevent interactions between the bisect, make and test processes and the scripts. +* Automatically bisect with temporary modifications (hot-fix): ++ +------------ +$ cat ~/test.sh +#!/bin/sh + +# tweak the working tree by merging the hot-fix branch +# and then attempt a build +if git merge --no-commit hot-fix && + make +then + # run project specific test and report its status + ~/check_test_case.sh + status=$? +else + # tell the caller this is untestable + status=125 +fi + +# undo the tweak to allow clean flipping to the next commit +git reset --hard + +# return control +exit $status +------------ ++ +This applies modifications from a hot-fix branch before each test run, +e.g. in case your build or test environment changed so that older +revisions may need a fix which newer ones have already. (Make sure the +hot-fix branch is based off a commit which is contained in all revisions +which you are bisecting, so that the merge does not pull in too much, or +use `git cherry-pick` instead of `git merge`.) + * Automatically bisect a broken test case: + ------------ -- cgit v0.10.2-6-g49f6