mirror of
https://github.com/git/git
synced 2024-08-27 11:39:22 +00:00
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>
This commit is contained in:
parent
311531c9de
commit
4cd66e7d6b
|
@ -1126,6 +1126,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:
|
||||
|
|
|
@ -922,6 +922,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 &&
|
||||
|
|
Loading…
Reference in a new issue