diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-01-12 11:38:14 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-01-12 11:38:19 -0800 |
commit | 42618bc34ee45d1f2ac3c68c8d63e12b83ab563a (patch) | |
tree | abd4d25e288e9068d6ea1e153cc4e29c220adc63 | |
parent | 1e6f5b22ad318446500fbd3b94b733eddd5b6414 (diff) | |
parent | 07913d5ae15d7f583a506ce991a6b88761e600e2 (diff) | |
download | git-42618bc34ee45d1f2ac3c68c8d63e12b83ab563a.tar.gz |
Merge branch 'cc/bisect-rev-parsing'
The logic in "git bisect bad HEAD" etc. to avoid forcing the test
of the common ancestor of bad and good commits was broken.
* cc/bisect-rev-parsing:
bisect: add test to check that revs are properly parsed
bisect: parse revs before passing them to check_expected_revs()
-rwxr-xr-x | git-bisect.sh | 11 | ||||
-rwxr-xr-x | t/t6030-bisect-porcelain.sh | 9 |
2 files changed, 16 insertions, 4 deletions
diff --git a/git-bisect.sh b/git-bisect.sh index 6cda2b5a60..2fc07acb0f 100755 --- a/git-bisect.sh +++ b/git-bisect.sh @@ -237,15 +237,18 @@ bisect_state() { check_expected_revs "$rev" ;; 2,bad|*,good|*,skip) shift - eval='' + hash_list='' for rev in "$@" do sha=$(git rev-parse --verify "$rev^{commit}") || die "$(eval_gettext "Bad rev input: \$rev")" - eval="$eval bisect_write '$state' '$sha'; " + hash_list="$hash_list $sha" done - eval "$eval" - check_expected_revs "$@" ;; + for rev in $hash_list + do + bisect_write "$state" "$rev" + done + check_expected_revs $hash_list ;; *,bad) die "$(gettext "'git bisect bad' can take only one argument.")" ;; *) diff --git a/t/t6030-bisect-porcelain.sh b/t/t6030-bisect-porcelain.sh index 064f5cefeb..e6abe65d5c 100755 --- a/t/t6030-bisect-porcelain.sh +++ b/t/t6030-bisect-porcelain.sh @@ -779,4 +779,13 @@ test_expect_success 'bisect log: only skip commits left' ' git bisect reset ' +test_expect_success '"git bisect bad HEAD" behaves as "git bisect bad"' ' + git checkout parallel && + git bisect start HEAD $HASH1 && + git bisect good HEAD && + git bisect bad HEAD && + test "$HASH6" = $(git rev-parse --verify HEAD) && + git bisect reset +' + test_done |