Skip to content

Commit

Permalink
bisect: parse revs before passing them to check_expected_revs()
Browse files Browse the repository at this point in the history
When running for example "git bisect bad HEAD" or
"git bisect good master", the parameter passed to
"git bisect (bad|good)" has to be parsed into a
commit hash before checking if it is the expected
commit or not.

We could do that in is_expected_rev() or in
check_expected_revs(), but it is already done in
bisect_state(). Let's just store the hash values
that result from this parsing, and then reuse
them after all the parsing is done.

This way we can also use a for loop over these
values to call bisect_write() on them, instead of
using eval.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Christian Couder authored and Junio C Hamano committed Dec 29, 2014
1 parent c2e8e4b commit 6bc02d5
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions git-bisect.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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.")" ;;
*)
Expand Down

0 comments on commit 6bc02d5

Please sign in to comment.