Re: [PATCH 09/29] bisect: libify `check_good_are_ancestors_of_bad` and its dependents
From: Christian Couder <hidden>
Date: 2020-01-21 06:59:17
On Mon, Jan 20, 2020 at 11:20 PM Johannes Schindelin [off-list ref] wrote:
On Mon, 20 Jan 2020, Miriam Rubio wrote:
quoted
@@ -876,8 +877,15 @@ static void check_good_are_ancestors_of_bad(struct repository *r, int fd, rev_nr, res = 0; struct commit **rev; - if (!current_bad_oid) - die(_("a %s revision is needed"), term_bad); + /* + * We don't want to clean the bisection state + * as we need to get back to where we started + * by using `git bisect reset`. + */ + if (!current_bad_oid) { + res = error(_("a %s revision is needed"), term_bad); + goto done; + }Why not just return here? Ah, there is a `filename` that was allocated... it is too bad that we have a mailing-list based review, as the hunk context simply cannot be extended in a mail. Personally, I think it would be nicer to split the definition of `filename` from its declaration and move it _after_ this conditional code, so that we can `return` right away.
Yeah, I agree.
However, there is a more pressing issue than that: `die()` exits with exit code 128, so in keeping with the idea to hand down negative exit codes as return values, should we not assign `res = -128` here?
I think it has been ok when converting git-bisect.sh to C to just convert `die(...)` into `return error(...)`.
quoted
/* Check if file BISECT_ANCESTORS_OK exists. */ if (!stat(filename, &st) && S_ISREG(st.st_mode))@@ -893,18 +901,20 @@ static void check_good_are_ancestors_of_bad(struct repository *r, if (check_ancestors(r, rev_nr, rev, prefix)) res = check_merge_bases(rev_nr, rev, no_checkout); free(rev); - if(res) - exit(res == -11 ? 0 : -res); - - /* Create file BISECT_ANCESTORS_OK. */ - fd = open(filename, O_CREAT | O_TRUNC | O_WRONLY, 0600); - if (fd < 0) - warning_errno(_("could not create file '%s'"), - filename); - else - close(fd); + + if (!res) + {We usually put the `{` on the same line as the `if` condition (like you did in the `if (!current_bad_oid)` line above. The rest looks reasonable. Thank you,
Thank you for your review, Christian.