Stephan Beyer <s-beyer@xxxxxxx> writes: > +test_expect_success 'bisect algorithm works in linear history with an odd number of commits' ' > + git bisect start A7 && > + git bisect next && > + test_cmp_rev HEAD A3 A4 > +' > + > +test_expect_success 'bisect algorithm works in linear history with an even number of commits' ' > + git bisect reset && > + git bisect start A8 && > + git bisect next && > + test_cmp_rev HEAD A4 > +' > + > +test_expect_success 'bisect algorithm works with a merge' ' > + git bisect reset && > + git bisect start Bmerge && > + git bisect next && > + test_cmp_rev HEAD A5 && > + git bisect good && > + test_cmp_rev HEAD A8 && > + git bisect good && > + test_cmp_rev HEAD B1 B2 > +' > + > +# | w min | w min | w min | w min | > +# B---. BCDmerge | 18 0 | 9 0 | 5 0 | 3 0 | > +# |\ \ \ | | | | | > +# | | | * D2 | 5 5 | 2 2 | 2 2*| good | > +# | | | * D1 | 4 4 | 1 1 | 1 1 | good | > +# | | * | C3 | 10 8 | 1 1 | 1 1 | 1 1*| > +# | | * | C2 | 9 9 *| good | good | good | > +# | | * | C1 | 8 8 | good | good | good | > +# | * | | B3 | 8 8 | 3 3 | 1 1 | 1 1*| > +# * | | | Bmerge | 11 7 | 4 4*| good | good | > +# |\ \ \ \ | | | | | > +# | |/ / / | | | | | > +# | * | | B2 | 7 7 | 2 2 | good | good | > +# | * | | B1 | 6 6 | 1 1 | good | good | > +# * | | | A8 | 8 8 | 1 1 | good | good | > +# | |/ / | | | | | > +# |/| | | | | | | > +# * | | A7 | 7 7 | good | good | good | > +# * | | A6 | 6 6 | good | good | good | > +# |/ / | | | | | > +# * | A5 | 5 5 | good | good | good | > +# * | A4 | 4 4 | good | good | good | > +# |/ | | | | | > +# * A3 | 3 3 | good | good | good | > +# * A2 | 2 2 | good | good | good | > +# * A1 | 1 1 | good | good | good | Nice drawing. With this, it is easy to see how the first three examples above are testing the right thing, too. It is not immediately clear what these asterisks in the table are trying to say, though (the same comment applies to the other drawing below). > +test_expect_success 'bisect algorithm works with octopus merge' ' > + git bisect reset && > + git bisect start BCDmerge && > + git bisect next && > + test_cmp_rev HEAD C2 && > + git bisect good && > + test_cmp_rev HEAD Bmerge && > + git bisect good && > + test_cmp_rev HEAD D2 && > + git bisect good && > + test_cmp_rev HEAD B3 C3 && > + git bisect good && > + test_cmp_rev HEAD C3 B3 && > + git bisect good > output && > + grep "$(git rev-parse BCDmerge) is the first bad commit" output > +' > + > +# G 5a6bcdf D3 | w min | w min | > +# | B 02f2eed A9 | 14 0 | 7 0 | > +# | *---. 6174c5c BCDmerge | 13 1 | 6 1 | > +# | |\ \ \ | | | > +# | |_|_|/ | | | > +# |/| | | | | | > +# G | | | a6d6dab D2 | good | good | > +# * | | | 86414e4 D1 | good | good | > +# | | | * c672402 C3 | 7 7 *| good | > +# | | | * 0555272 C2 | 6 6 | good | > +# | | | * 28c2b2a C1 | 5 5 | good | > +# | | * | 4b5a7d9 B3 | 5 5 | 3 3 *| > +# | * | | a419ab7 Bmerge | 8 6 | 4 3 *| > +# | |\ \ \ | | | > +# | | |/ / | | | > +# | | * | 4fa1e39 B2 | 4 4 | 2 2 | > +# | | * | 92a014d B1 | 3 3 | 1 1 | > +# | * | | 79158c7 A8 | 5 5 | 1 1 | > +# | | |/ | | | > +# | |/| | | | > +# | * | 237eb73 A7 | 4 4 | good | > +# | * | 3b2f811 A6 | 3 3 | good | > +# | |/ | | | > +# | * 0f2b6d2 A5 | 2 2 | good | > +# | * 1fcdaf0 A4 | 1 1 | good | > +# |/ | | | > +# * 096648b A3 | good | good | > +# * 1cf01b8 A2 | good | good | > +# * 6623165 A1 | good | good | > + > +test_expect_success 'bisect algorithm works with good commit on unrelated branch' ' > + git bisect reset && > + git bisect start A9 D3 && > + test_cmp_rev HEAD "$(git merge-base A9 D3)" && > + test_cmp_rev HEAD D2 && > + git bisect good && > + test_cmp_rev HEAD C3 && > + git bisect good && > + test_cmp_rev HEAD B3 Bmerge > +' > + > +test_done -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html