bisect--helper: use BISECT_TERMS in 'bisect skip' command

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> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ramsay Jones committed Apr 29, 2021 at 21:15 UTC 4cd66e7d6b423d3c5b161b55afb07cb1df59e75f
2 files changed +12
builtin/bisect--helper.c
+1
@@ -1126,6 +1126,7 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
1126 break;
1127 case BISECT_SKIP:
1128 set_terms(&terms, "bad", "good");
1129 + get_terms(&terms);
1130 res = bisect_skip(&terms, argv, argc);
1131 break;
1132 default:
t/t6030-bisect-porcelain.sh
+11
@@ -922,6 +922,17 @@ test_expect_success 'bisect start takes options and revs in any order' '
922 test_cmp expected actual
923 '
924
925 +# Bisect is started with --term-new and --term-old arguments,
926 +# then skip. The HEAD should be changed.
927 +test_expect_success 'bisect skip works with --term*' '
928 + git bisect reset &&
929 + git bisect start --term-new=fixed --term-old=unfixed HEAD $HASH1 &&
930 + hash_skipped_from=$(git rev-parse --verify HEAD) &&
931 + git bisect skip &&
932 + hash_skipped_to=$(git rev-parse --verify HEAD) &&
933 + test "$hash_skipped_from" != "$hash_skipped_to"
934 +'
935 +
936 test_expect_success 'git bisect reset cleans bisection state properly' '
937 git bisect reset &&
938 git bisect start &&