From 6f2387cfdf3f903b70290b39d46cccbe759dc44c Mon Sep 17 00:00:00 2001 From: Jonas Rebmann Date: Fri, 20 Mar 2026 19:07:52 +0100 Subject: [PATCH] bisect: use selected alternate terms in status output Alternate bisect terms are helpful when the terms "good" and "bad" are confusing such as when bisecting for the resolution of an issue (the first good commit) rather than the introduction of a regression. If alternate terms are chosen, the terms "good" and "bad" should not be used in git's output to avoid confusion. An old/new bisect should end with $ git bisect old [sha] is the first new commit not with $ git bisect old [sha] is the first bad commit Using hardcoded good/bad vocabulary can give confusion about what action is required: status: waiting for bad commit, 1 good commit known $ git bisect bad error: Invalid command: you're currently in a new/old bisect fatal: unknown command: 'bad' To avoid confusion, use alternate terms consistently across the bisect output. Signed-off-by: Jonas Rebmann Signed-off-by: Junio C Hamano --- builtin/bisect.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/builtin/bisect.c b/builtin/bisect.c index 4520e585d0..ee6a2c83b8 100644 --- a/builtin/bisect.c +++ b/builtin/bisect.c @@ -465,13 +465,16 @@ static void bisect_print_status(const struct bisect_terms *terms) return; if (!state.nr_good && !state.nr_bad) - bisect_log_printf(_("status: waiting for both good and bad commits\n")); + bisect_log_printf(_("status: waiting for both %s and %s commits\n"), + terms->term_good, terms->term_bad); else if (state.nr_good) - bisect_log_printf(Q_("status: waiting for bad commit, %d good commit known\n", - "status: waiting for bad commit, %d good commits known\n", - state.nr_good), state.nr_good); + bisect_log_printf(Q_("status: waiting for %s commit, %d %s commit known\n", + "status: waiting for %s commit, %d %s commits known\n", + state.nr_good), + terms->term_bad, state.nr_good, terms->term_good); else - bisect_log_printf(_("status: waiting for good commit(s), bad commit known\n")); + bisect_log_printf(_("status: waiting for %s commit(s), %s commit known\n"), + terms->term_good, terms->term_bad); } static int bisect_next_check(const struct bisect_terms *terms, @@ -1262,14 +1265,14 @@ static int bisect_run(struct bisect_terms *terms, int argc, const char **argv) int rc = verify_good(terms, command.buf); is_first_run = 0; if (rc < 0 || 128 <= rc) { - error(_("unable to verify %s on good" - " revision"), command.buf); + error(_("unable to verify %s on %s" + " revision"), command.buf, terms->term_good); res = BISECT_FAILED; break; } if (rc == res) { - error(_("bogus exit code %d for good revision"), - rc); + error(_("bogus exit code %d for %s revision"), + rc, terms->term_good); res = BISECT_FAILED; break; } @@ -1314,7 +1317,7 @@ static int bisect_run(struct bisect_terms *terms, int argc, const char **argv) puts(_("bisect run success")); res = BISECT_OK; } else if (res == BISECT_INTERNAL_SUCCESS_1ST_BAD_FOUND) { - puts(_("bisect found first bad commit")); + printf(_("bisect found first %s commit\n"), terms->term_bad); res = BISECT_OK; } else if (res) { error(_("bisect run failed: 'git bisect %s'"