|  | #ifndef BISECT_H | 
|  | #define BISECT_H | 
|  |  | 
|  | struct commit_list; | 
|  | struct repository; | 
|  |  | 
|  | /* | 
|  | * Find bisection. If something is found, `reaches` will be the number of | 
|  | * commits that the best commit reaches. `all` will be the count of | 
|  | * non-SAMETREE commits. If nothing is found, `list` will be NULL. | 
|  | * Otherwise, it will be either all non-SAMETREE commits or the single | 
|  | * best commit, as chosen by `find_all`. | 
|  | */ | 
|  | void find_bisection(struct commit_list **list, int *reaches, int *all, | 
|  | unsigned bisect_flags); | 
|  |  | 
|  | struct commit_list *filter_skipped(struct commit_list *list, | 
|  | struct commit_list **tried, | 
|  | int show_all, | 
|  | int *count, | 
|  | int *skipped_first); | 
|  |  | 
|  | #define BISECT_SHOW_ALL		(1<<0) | 
|  | #define REV_LIST_QUIET		(1<<1) | 
|  |  | 
|  | #define FIND_BISECTION_ALL			(1u<<0) | 
|  | #define FIND_BISECTION_FIRST_PARENT_ONLY	(1u<<1) | 
|  |  | 
|  | struct rev_list_info { | 
|  | struct rev_info *revs; | 
|  | int flags; | 
|  | int show_timestamp; | 
|  | int hdr_termination; | 
|  | const char *header_prefix; | 
|  | }; | 
|  |  | 
|  | /* | 
|  | * enum bisect_error represents the following return codes: | 
|  | * BISECT_OK: success code. Internally, it means that next | 
|  | * commit has been found (and possibly checked out) and it | 
|  | * should be tested. | 
|  | * BISECT_FAILED error code: default error code. | 
|  | * BISECT_ONLY_SKIPPED_LEFT error code: only skipped | 
|  | * commits left to be tested. | 
|  | * BISECT_MERGE_BASE_CHECK error code: merge base check failed. | 
|  | * BISECT_NO_TESTABLE_COMMIT error code: no testable commit found. | 
|  | * BISECT_INTERNAL_SUCCESS_1ST_BAD_FOUND early success code: | 
|  | * first term_bad commit found. | 
|  | * BISECT_INTERNAL_SUCCESS_MERGE_BASE early success | 
|  | * code: found merge base that should be tested. | 
|  | * Early success codes BISECT_INTERNAL_SUCCESS_1ST_BAD_FOUND and | 
|  | * BISECT_INTERNAL_SUCCESS_MERGE_BASE should be only internal codes. | 
|  | */ | 
|  | enum bisect_error { | 
|  | BISECT_OK = 0, | 
|  | BISECT_FAILED = -1, | 
|  | BISECT_ONLY_SKIPPED_LEFT = -2, | 
|  | BISECT_MERGE_BASE_CHECK = -3, | 
|  | BISECT_NO_TESTABLE_COMMIT = -4, | 
|  | BISECT_INTERNAL_SUCCESS_1ST_BAD_FOUND = -10, | 
|  | BISECT_INTERNAL_SUCCESS_MERGE_BASE = -11 | 
|  | }; | 
|  |  | 
|  | enum bisect_error bisect_next_all(struct repository *r, const char *prefix); | 
|  |  | 
|  | int estimate_bisect_steps(int all); | 
|  |  | 
|  | void read_bisect_terms(const char **bad, const char **good); | 
|  |  | 
|  | int bisect_clean_state(void); | 
|  |  | 
|  | #endif |