bisect: simplify the addition of new bisect terms
We create a file BISECT_TERMS in the repository .git to be read during a bisection. There's no user-interface yet, but "git bisect" works if terms other than old/new or bad/good are set in .git/BISECT_TERMS. The fonctions to be changed if we add new terms are quite few. In git-bisect.sh: check_and_set_terms bisect_voc Co-authored-by: Louis Stuber <stuberl@ensimag.grenoble-inp.fr> Tweaked-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Antoine Delaite <antoine.delaite@ensimag.grenoble-inp.fr> Signed-off-by: Louis Stuber <stuberl@ensimag.grenoble-inp.fr> Signed-off-by: Valentin Duperray <Valentin.Duperray@ensimag.imag.fr> Signed-off-by: Franck Jonas <Franck.Jonas@ensimag.imag.fr> Signed-off-by: Lucien Kong <Lucien.Kong@ensimag.imag.fr> Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr> Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
43f9d9f3a6
commit
cb46d630ba
33
bisect.c
33
bisect.c
@ -904,6 +904,36 @@ static void show_diff_tree(const char *prefix, struct commit *commit)
|
||||
log_tree_commit(&opt, commit);
|
||||
}
|
||||
|
||||
/*
|
||||
* The terms used for this bisect session are stored in BISECT_TERMS.
|
||||
* We read them and store them to adapt the messages accordingly.
|
||||
* Default is bad/good.
|
||||
*/
|
||||
void read_bisect_terms(const char **read_bad, const char **read_good)
|
||||
{
|
||||
struct strbuf str = STRBUF_INIT;
|
||||
const char *filename = git_path("BISECT_TERMS");
|
||||
FILE *fp = fopen(filename, "r");
|
||||
|
||||
if (!fp) {
|
||||
if (errno == ENOENT) {
|
||||
*read_bad = "bad";
|
||||
*read_good = "good";
|
||||
return;
|
||||
} else {
|
||||
die("could not read file '%s': %s", filename,
|
||||
strerror(errno));
|
||||
}
|
||||
} else {
|
||||
strbuf_getline(&str, fp, '\n');
|
||||
*read_bad = strbuf_detach(&str, NULL);
|
||||
strbuf_getline(&str, fp, '\n');
|
||||
*read_good = strbuf_detach(&str, NULL);
|
||||
}
|
||||
strbuf_release(&str);
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
/*
|
||||
* We use the convention that exiting with an exit code 10 means that
|
||||
* the bisection process finished successfully.
|
||||
@ -920,8 +950,7 @@ int bisect_next_all(const char *prefix, int no_checkout)
|
||||
const unsigned char *bisect_rev;
|
||||
char bisect_rev_hex[GIT_SHA1_HEXSZ + 1];
|
||||
|
||||
term_bad = "bad";
|
||||
term_good = "good";
|
||||
read_bisect_terms(&term_bad, &term_good);
|
||||
if (read_bisect_refs())
|
||||
die("reading bisect refs failed");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user