mirror of
https://github.com/git/git.git
synced 2025-09-10 22:44:50 +02:00
bisect--helper: reimplement bisect_next and bisect_auto_next shell functions in C
Reimplement the `bisect_next()` and the `bisect_auto_next()` shell functions in C and add the subcommands to `git bisect--helper` to call them from git-bisect.sh . bisect_auto_next() function returns an enum bisect_error type as whole `git bisect` can exit with an error code when bisect_next() does. Return an error when `bisect_next()` fails, that fix a bug on shell script version. Using `--bisect-next` and `--bisect-auto-next` subcommands is a temporary measure to port shell function to C so as to use the existing test suite. As more functions are ported, `--bisect-auto-next` subcommand will be retired and will be called by some other methods. Mentored-by: Lars Schneider <larsxschneider@gmail.com> 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
c7a7f48f4f
commit
517ecb3161
11
bisect.c
11
bisect.c
@@ -988,8 +988,11 @@ void read_bisect_terms(const char **read_bad, const char **read_good)
|
||||
* the bisection process finished successfully.
|
||||
* In this case the calling function or command should not turn a
|
||||
* BISECT_INTERNAL_SUCCESS_1ST_BAD_FOUND return code into an error or a non zero exit code.
|
||||
* If no_checkout is non-zero, the bisection process does not
|
||||
* checkout the trial commit but instead simply updates BISECT_HEAD.
|
||||
*
|
||||
* Checking BISECT_INTERNAL_SUCCESS_1ST_BAD_FOUND
|
||||
* in bisect_helper::bisect_next() and only transforming it to 0 at
|
||||
* the end of bisect_helper::cmd_bisect__helper() helps bypassing
|
||||
* all the code related to finding a commit to test.
|
||||
*/
|
||||
enum bisect_error bisect_next_all(struct repository *r, const char *prefix)
|
||||
{
|
||||
@@ -999,6 +1002,10 @@ enum bisect_error bisect_next_all(struct repository *r, const char *prefix)
|
||||
enum bisect_error res = BISECT_OK;
|
||||
struct object_id *bisect_rev;
|
||||
char *steps_msg;
|
||||
/*
|
||||
* If no_checkout is non-zero, the bisection process does not
|
||||
* checkout the trial commit but instead simply updates BISECT_HEAD.
|
||||
*/
|
||||
int no_checkout = ref_exists("BISECT_HEAD");
|
||||
unsigned bisect_flags = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user