Merge branch 'cc/bisect-rev-parsing'
authorJunio C Hamano <gitster@pobox.com>
Mon, 12 Jan 2015 19:38:14 +0000 (11:38 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 12 Jan 2015 19:38:19 +0000 (11:38 -0800)
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()

git-bisect.sh
t/t6030-bisect-porcelain.sh
index 6cda2b5a601c54d138ab3126a25c59371f6f7188..2fc07acb0f242154fec868207cfd77f448929200 100755 (executable)
@@ -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.")" ;;
        *)
index 064f5cefeb4cf7e3bfa2c104384094492dc54f91..e6abe65d5c3370a53e3f034486101a8e9ee4055b 100755 (executable)
@@ -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