git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2] bisect--helper: use BISECT_TERMS in 'bisect skip' command

From
Ramsay Jones <ramsay@ramsayjones.plus.com>
Date
Apr 29, 2021, 20:15 UTC
Message-ID
<fa098676-a56c-cbb9-28cb-e57d4a8a5d77@ramsayjones.plus.com>

Commit e4c7b33747 ("bisect--helper: reimplement `bisect_skip` shell function in C", 2021-02-03), as part of the shell-to-C conversion, forgot to read the 'terms' file (.git/BISECT_TERMS) during the new 'bisect skip' command implementation. As a result, the 'bisect skip' command will use the default 'bad'/'good' terms. If the bisection terms have been set to non-default values (for example by the 'bisect start' command), then the 'bisect skip' command will fail.

In order to correct this problem, we insert a call to the get_terms() function, which reads the non-default terms from that file (if set), in the '--bisect-skip' command implementation of 'bisect--helper'.

Also, add a test[1] to protect against potential future regression.
[1] https://lore.kernel.org/git/xmqqim45h585.fsf@gitster.g/T/#m207791568054b0f8cf1a3942878ea36293273c7d
Reported-by: Trygve Aaberge <trygveaa@gmail.com>
Signed-off-by: Bagas Sanjaya <bagasdotme@gmail.com>
Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
---
Hi Junio,

This v2 patch was also created directly on top of commit e4c7b33747 and, once again, applied to current 'master' (@311531c9de). (I was a little surprised that it applied clean, given the changes to t6030-*.sh in the meantime! ;).

I didn't bother with the range-diff[*], since it wasn't very illuminating (just the addition of a few trailing lines in the commit message and the addition of the test).

I don't know if I did the 'Co-authorship' bit correctly; I nearly used an 'Co-authored-by:' rather than an 'Signed-off-by:' for Bagas, but I seem to remember that caused some push-back recently. Anyway, if I messed that up, please just modify however you see fit.

ATB, Ramsay Jones

[*] Once I got it to work, that is; for some reason, I was trying smaller creation-factor values rather than larger! ;-)

 builtin/bisect--helper.c    |  1 +
 t/t6030-bisect-porcelain.sh | 11 +++++++++++
 2 files changed, 12 insertions(+)
diff --git a/builtin/bisect--helper.c b/builtin/bisect--helper.c
index 7ad9b4d55b..49c07f0710 100644
--- a/builtin/bisect--helper.c
+++ b/builtin/bisect--helper.c
@@ -1129,6 +1129,7 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
 		break;
 	case BISECT_SKIP:
 		set_terms(&terms, "bad", "good");
+		get_terms(&terms);
 		res = bisect_skip(&terms, argv, argc);
 		break;
 	default:
diff --git a/t/t6030-bisect-porcelain.sh b/t/t6030-bisect-porcelain.sh
index aa226381be..b707296ae2 100755
--- a/t/t6030-bisect-porcelain.sh
+++ b/t/t6030-bisect-porcelain.sh
@@ -919,6 +919,17 @@ test_expect_success 'bisect start takes options and revs in any order' '
 	test_cmp expected actual
 '
 
+# Bisect is started with --term-new and --term-old arguments,
+# then skip. The HEAD should be changed.
+test_expect_success 'bisect skip works with --term*' '
+	git bisect reset &&
+	git bisect start --term-new=fixed --term-old=unfixed HEAD $HASH1 &&
+	hash_skipped_from=$(git rev-parse --verify HEAD) &&
+	git bisect skip &&
+	hash_skipped_to=$(git rev-parse --verify HEAD) &&
+	test "$hash_skipped_from" != "$hash_skipped_to"
+'
+
 test_expect_success 'git bisect reset cleans bisection state properly' '
 	git bisect reset &&
 	git bisect start &&
-- 
2.31.0
Next: Junio C Hamano
Message 1 of 3 in “bisect--helper: use BISECT_TERMS in 'bisect skip' command”
  1. bisect--helper: use BISECT_TERMS in 'bisect skip' commandRamsay Jones, Apr 29, 2021
  2. Junio C HamanoApr 30, 2021
  3. Christian CouderApr 30, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.