bisect: libify check_good_are_ancestors_of_bad
and its dependents
Since we want to get rid of git-bisect.sh, it would be necessary to convert those exit() calls to return statements so that errors can be reported. Emulate try catch in C by converting `exit(<positive-value>)` to `return <negative-value>`. Follow POSIX conventions to return <negative-value> to indicate error. Code that turns BISECT_INTERNAL_SUCCESS_MERGE_BASE (-11) to BISECT_OK (0) from `check_good_are_ancestors_of_bad()` has been moved to `cmd_bisect__helper()`. Update all callers to handle the error returns. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Mentored by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Pranit Bauva <pranit.bauva@gmail.com> Signed-off-by: Tanushree Tumane <tanushreetumane@gmail.com> Signed-off-by: Miriam Rubio <mirucam@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
cdd4dc2d6a
commit
45b6370812
@ -666,7 +666,8 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
|
||||
|
||||
switch (cmdmode) {
|
||||
case NEXT_ALL:
|
||||
return bisect_next_all(the_repository, prefix, no_checkout);
|
||||
res = bisect_next_all(the_repository, prefix, no_checkout);
|
||||
break;
|
||||
case WRITE_TERMS:
|
||||
if (argc != 2)
|
||||
return error(_("--write-terms requires two arguments"));
|
||||
@ -713,5 +714,13 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
|
||||
return error("BUG: unknown subcommand '%d'", cmdmode);
|
||||
}
|
||||
free_terms(&terms);
|
||||
|
||||
/*
|
||||
* Handle early success
|
||||
* From check_merge_bases > check_good_are_ancestors_of_bad > bisect_next_all
|
||||
*/
|
||||
if (res == BISECT_INTERNAL_SUCCESS_MERGE_BASE)
|
||||
res = BISECT_OK;
|
||||
|
||||
return abs(res);
|
||||
}
|
||||
|
Reference in New Issue
Block a user