summaryrefslogtreecommitdiff
path: root/git-bisect.sh
diff options
context:
space:
mode:
authorChristian Couder <chriscool@tuxfamily.org>2014-12-25 18:25:32 (GMT)
committerJunio C Hamano <gitster@pobox.com>2014-12-29 19:19:55 (GMT)
commit6bc02d5627358f6a264c5dbb159b5a9aeb44ebf4 (patch)
tree2c38713f1b7634d44a4335cbe1ac151a99187989 /git-bisect.sh
parentc2e8e4b9da4d007b15faa2e3d407b2fd279f0572 (diff)
downloadgit-6bc02d5627358f6a264c5dbb159b5a9aeb44ebf4.zip
git-6bc02d5627358f6a264c5dbb159b5a9aeb44ebf4.tar.gz
git-6bc02d5627358f6a264c5dbb159b5a9aeb44ebf4.tar.bz2
bisect: parse revs before passing them to check_expected_revs()
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>
Diffstat (limited to 'git-bisect.sh')
-rwxr-xr-xgit-bisect.sh11
1 files changed, 7 insertions, 4 deletions
diff --git a/git-bisect.sh b/git-bisect.sh
index 6cda2b5..2fc07ac 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.")" ;;
*)