From: Junio C Hamano Date: Fri, 5 Mar 2010 06:25:23 +0000 (-0800) Subject: Merge branch 'cc/maint-bisect-paths' into maint X-Git-Tag: v1.7.0.2~14 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/ce5044df2a29c4f4979089b072aad43bccb3b9fd?ds=inline;hp=-c Merge branch 'cc/maint-bisect-paths' into maint * cc/maint-bisect-paths: bisect: error out when passing bad path parameters --- ce5044df2a29c4f4979089b072aad43bccb3b9fd diff --combined bisect.c index 6dc27ee7a6,88881f7b6e..b556b11610 --- a/bisect.c +++ b/bisect.c @@@ -593,7 -593,7 +593,7 @@@ struct commit_list *filter_skipped(stru * is increased by one between each call, but that should not matter * for this application. */ -int get_prn(int count) { +static int get_prn(int count) { count = count * 1103515245 + 12345; return ((unsigned)(count/65536) % PRN_MODULO); } @@@ -813,11 -813,11 +813,11 @@@ static void handle_skipped_merge_base(c char *bad_hex = sha1_to_hex(current_bad_sha1); char *good_hex = join_sha1_array_hex(&good_revs, ' '); - fprintf(stderr, "Warning: the merge base between %s and [%s] " + warning("the merge base between %s and [%s] " "must be skipped.\n" "So we cannot be sure the first bad commit is " "between %s and %s.\n" - "We continue anyway.\n", + "We continue anyway.", bad_hex, good_hex, mb_hex, bad_hex); free(good_hex); } @@@ -956,7 -956,7 +956,7 @@@ int bisect_next_all(const char *prefix { struct rev_info revs; struct commit_list *tried; - int reaches = 0, all = 0, nr; + int reaches = 0, all = 0, nr, steps; const unsigned char *bisect_rev; char bisect_rev_hex[41]; @@@ -986,6 -986,12 +986,12 @@@ exit(1); } + if (!all) { + fprintf(stderr, "No testable commit found.\n" + "Maybe you started with bad path parameters?\n"); + exit(4); + } + bisect_rev = revs.commits->item->object.sha1; memcpy(bisect_rev_hex, sha1_to_hex(bisect_rev), 41); @@@ -998,10 -1004,8 +1004,10 @@@ } nr = all - reaches - 1; - printf("Bisecting: %d revisions left to test after this " - "(roughly %d steps)\n", nr, estimate_bisect_steps(all)); + steps = estimate_bisect_steps(all); + printf("Bisecting: %d revision%s left to test after this " + "(roughly %d step%s)\n", nr, (nr == 1 ? "" : "s"), + steps, (steps == 1 ? "" : "s")); return bisect_checkout(bisect_rev_hex); } diff --combined t/t6030-bisect-porcelain.sh index c51865fdbc,dc9e8d030a..3b042aacd6 --- a/t/t6030-bisect-porcelain.sh +++ b/t/t6030-bisect-porcelain.sh @@@ -423,7 -423,7 +423,7 @@@ test_expect_success 'skipped merge bas grep "merge base must be tested" my_bisect_log.txt && grep $HASH4 my_bisect_log.txt && git bisect skip > my_bisect_log.txt 2>&1 && - grep "Warning" my_bisect_log.txt && + grep "warning" my_bisect_log.txt && grep $SIDE_HASH6 my_bisect_log.txt && git bisect reset ' @@@ -567,6 -567,11 +567,11 @@@ test_expect_success 'skipping away fro test "$para3" = "$PARA_HASH3" ' + test_expect_success 'erroring out when using bad path parameters' ' + test_must_fail git bisect start $PARA_HASH7 $HASH1 -- foobar 2> error.txt && + grep "bad path parameters" error.txt + ' + # # test_done