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

Re: [PATCH 06/29] bisect: libify `exit_if_skipped_commits` to `error_if_skipped*` and its dependents

From: Miriam R. <hidden>
Date: 2020-01-21 10:00:18

Hi,

El mar., 21 ene. 2020 a las 7:40, Christian Couder
([off-list ref]) escribió:
Hi Dscho,

On Mon, Jan 20, 2020 at 10:57 PM Johannes Schindelin
[off-list ref] wrote:
quoted
On Mon, 20 Jan 2020, Miriam Rubio wrote:
quoted
quoted
      printf("There are only 'skip'ped commits left to test.\n"
             "The first %s commit could be any of:\n", term_bad);
@@ -676,7 +676,13 @@ static void exit_if_skipped_commits(struct commit_list *tried,
      if (bad)
              printf("%s\n", oid_to_hex(bad));
      printf(_("We cannot bisect more!\n"));
-     exit(2);
+
+     /*
+      * We don't want to clean the bisection state
+      * as we need to get back to where we started
+      * by using `git bisect reset`.
+      */
+     return -2;
This comment is a good indicator that the constant `-2` here is a "magic"
number and it would most likely make sense to turn the return type from an
`int` into an `enum` instead.
Many functions use `return error(...)` and error codes from these
functions and from exit_if_skipped_commits() are going to get mixed.
So I am not sure that using an enum for only some of the error codes
will make things clearer.
quoted
quoted
 static int is_expected_rev(const struct object_id *oid)
@@ -949,7 +955,7 @@ int bisect_next_all(struct repository *r, const char *prefix, int no_checkout)
 {
      struct rev_info revs;
      struct commit_list *tried;
-     int reaches = 0, all = 0, nr, steps;
+     int reaches = 0, all = 0, nr, steps, res;
      struct object_id *bisect_rev;
      char *steps_msg;
@@ -972,8 +978,9 @@ int bisect_next_all(struct repository *r, const char *prefix, int no_checkout)
               * We should exit here only if the "bad"
               * commit is also a "skip" commit.
               */
-             exit_if_skipped_commits(tried, NULL);
-
+             res = error_if_skipped_commits(tried, NULL);
+             if (res)
+                     exit(-res);
So we still `exit()` in `libgit.a`? I hoped for a more thorough
libification.
The exit() calls are removed in later patches.
quoted
Besides, the `if (res)` probably wants to be an `if (res < 0)`, right?
Yeah, I agree.
Noted!
Thank you Johannes and Christian.
Thanks 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