Thread (53 messages) 53 messages, 3 authors, 2020-02-17

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help