All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miriam Rubio <mirucam@gmail.com>
To: git@vger.kernel.org
Cc: Pranit Bauva <pranit.bauva@gmail.com>,
	Christian Couder <chriscool@tuxfamily.org>,
	Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	Tanushree Tumane <tanushreetumane@gmail.com>,
	Miriam Rubio <mirucam@gmail.com>
Subject: [PATCH v3 12/13] bisect: libify `handle_bad_merge_base` and its dependents
Date: Sat,  8 Feb 2020 10:07:03 +0100	[thread overview]
Message-ID: <20200208090704.26506-13-mirucam@gmail.com> (raw)
In-Reply-To: <20200208090704.26506-1-mirucam@gmail.com>

From: Pranit Bauva <pranit.bauva@gmail.com>

Since we want to get rid of git-bisect.sh, it would be necessary to
convert those exit() calls to return statements so that errors can be
reported.

Emulate try catch in C by converting `exit(<positive-value>)` to
`return <negative-value>`. Follow POSIX conventions to return
<negative-value> to indicate error.

Update all callers to handle the error returns.

Mentored-by: Christian Couder <chriscool@tuxfamily.org>
Mentored-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Pranit Bauva <pranit.bauva@gmail.com>
Signed-off-by: Tanushree Tumane <tanushreetumane@gmail.com>
Signed-off-by: Miriam Rubio <mirucam@gmail.com>
---
 bisect.c | 9 +++++----
 bisect.h | 1 +
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/bisect.c b/bisect.c
index f5ce3a4b70..837332a428 100644
--- a/bisect.c
+++ b/bisect.c
@@ -761,7 +761,7 @@ static struct commit **get_bad_and_good_commits(struct repository *r,
 	return rev;
 }
 
-static void handle_bad_merge_base(void)
+static enum bisect_error handle_bad_merge_base(void)
 {
 	if (is_expected_rev(current_bad_oid)) {
 		char *bad_hex = oid_to_hex(current_bad_oid);
@@ -782,14 +782,14 @@ static void handle_bad_merge_base(void)
 				"between %s and [%s].\n"),
 				bad_hex, term_bad, term_good, bad_hex, good_hex);
 		}
-		exit(3);
+		return BISECT_MERGE_BASE_CHECK;
 	}
 
 	fprintf(stderr, _("Some %s revs are not ancestors of the %s rev.\n"
 		"git bisect cannot work properly in this case.\n"
 		"Maybe you mistook %s and %s revs?\n"),
 		term_good, term_bad, term_good, term_bad);
-	exit(1);
+	return BISECT_FAILED;
 }
 
 static void handle_skipped_merge_base(const struct object_id *mb)
@@ -830,7 +830,8 @@ static enum bisect_error check_merge_bases(int rev_nr, struct commit **rev, int
 	for (; result; result = result->next) {
 		const struct object_id *mb = &result->item->object.oid;
 		if (oideq(mb, current_bad_oid)) {
-			handle_bad_merge_base();
+			res = handle_bad_merge_base();
+			break;
 		} else if (0 <= oid_array_lookup(&good_revs, mb)) {
 			continue;
 		} else if (0 <= oid_array_lookup(&skipped_revs, mb)) {
diff --git a/bisect.h b/bisect.h
index f68ae85376..0d9758179f 100644
--- a/bisect.h
+++ b/bisect.h
@@ -48,6 +48,7 @@ enum bisect_error {
 	BISECT_OK = 0,
 	BISECT_FAILED = -1,
 	BISECT_ONLY_SKIPPED_LEFT = -2,
+	BISECT_MERGE_BASE_CHECK = -3,
 	BISECT_INTERNAL_SUCCESS_MERGE_BASE = -11
 };
 
-- 
2.25.0


  parent reply	other threads:[~2020-02-08  9:08 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-08  9:06 [Outreachy] [PATCH v3 00/13] Finish converting git bisect to C part 1 Miriam Rubio
2020-02-08  9:06 ` [PATCH v3 01/13] bisect--helper: convert `vocab_*` char pointers to char arrays Miriam Rubio
2020-02-08  9:06 ` [PATCH v3 02/13] bisect--helper: change `retval` to `res` Miriam Rubio
2020-02-08  9:06 ` [PATCH v3 03/13] bisect: use the standard 'if (!var)' way to check for 0 Miriam Rubio
2020-02-08  9:06 ` [PATCH v3 04/13] run-command: make `exists_in_PATH()` non-static Miriam Rubio
2020-02-08 10:55   ` René Scharfe
2020-02-09  9:59     ` Miriam R.
     [not found]       ` <CAN7CjDC46xTHBxvkbWvYfUt91Z6sdPP1tT3rJBoc4x6QCrv+2A@mail.gmail.com>
     [not found]         ` <47b51655-6373-0d5f-1397-8cbbb73d6661@web.de>
2020-02-10 16:05           ` Miriam R.
2020-02-09 23:16   ` Taylor Blau
2020-02-08  9:06 ` [PATCH v3 05/13] bisect--helper: introduce new `decide_next()` function Miriam Rubio
2020-02-08  9:06 ` [PATCH v3 06/13] bisect: add enum to represent bisect returning codes Miriam Rubio
2020-02-08  9:06 ` [PATCH v3 07/13] bisect--helper: return error codes from `cmd_bisect__helper()` Miriam Rubio
2020-02-08  9:06 ` [PATCH v3 08/13] bisect: libify `exit_if_skipped_commits` to `error_if_skipped*` and its dependents Miriam Rubio
2020-02-08  9:07 ` [PATCH v3 09/13] bisect: libify `bisect_checkout` Miriam Rubio
2020-02-08  9:07 ` [PATCH v3 10/13] bisect: libify `check_merge_bases` and its dependents Miriam Rubio
2020-02-08  9:07 ` [PATCH v3 11/13] bisect: libify `check_good_are_ancestors_of_bad` " Miriam Rubio
2020-02-08  9:07 ` Miriam Rubio [this message]
2020-02-08  9:07 ` [PATCH v3 13/13] bisect: libify `bisect_next_all` Miriam Rubio

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200208090704.26506-13-mirucam@gmail.com \
    --to=mirucam@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=chriscool@tuxfamily.org \
    --cc=git@vger.kernel.org \
    --cc=pranit.bauva@gmail.com \
    --cc=tanushreetumane@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.