summaryrefslogtreecommitdiff
path: root/git-bisect.sh
diff options
context:
space:
mode:
authorMatthieu Moy <Matthieu.Moy@imag.fr>2015-06-29 15:40:31 (GMT)
committerJunio C Hamano <gitster@pobox.com>2015-08-03 18:42:42 (GMT)
commit4a6ada32cb64b0eba8b6f995e4230f0c722fd580 (patch)
tree3a6644345afa001baec4e9f5c7c0efd0dedba938 /git-bisect.sh
parentcb46d630baf780412f8ca0592531880b592f0922 (diff)
downloadgit-4a6ada32cb64b0eba8b6f995e4230f0c722fd580.zip
git-4a6ada32cb64b0eba8b6f995e4230f0c722fd580.tar.gz
git-4a6ada32cb64b0eba8b6f995e4230f0c722fd580.tar.bz2
bisect: don't mix option parsing and non-trivial code
As-is, the revisions that appear on the command-line are processed in order. This would mix badly with code that changes the configuration (e.g. change $TERM_GOOD and $TERM_BAD) while processing the options. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-bisect.sh')
-rwxr-xr-xgit-bisect.sh30
1 files changed, 17 insertions, 13 deletions
diff --git a/git-bisect.sh b/git-bisect.sh
index dcd7e59..ea63223 100755
--- a/git-bisect.sh
+++ b/git-bisect.sh
@@ -78,6 +78,7 @@ bisect_start() {
bad_seen=0
eval=''
must_write_terms=0
+ revs=''
if test "z$(git rev-parse --is-bare-repository)" != zfalse
then
mode=--no-checkout
@@ -102,24 +103,27 @@ bisect_start() {
die "$(eval_gettext "'\$arg' does not appear to be a valid revision")"
break
}
-
- # The user ran "git bisect start <sha1>
- # <sha1>", hence did not explicitly specify
- # the terms, but we are already starting to
- # set references named with the default terms,
- # and won't be able to change afterwards.
- must_write_terms=1
-
- case $bad_seen in
- 0) state=$TERM_BAD ; bad_seen=1 ;;
- *) state=$TERM_GOOD ;;
- esac
- eval="$eval bisect_write '$state' '$rev' 'nolog' &&"
+ revs="$revs $rev"
shift
;;
esac
done
+ for rev in $revs
+ do
+ # The user ran "git bisect start <sha1>
+ # <sha1>", hence did not explicitly specify
+ # the terms, but we are already starting to
+ # set references named with the default terms,
+ # and won't be able to change afterwards.
+ must_write_terms=1
+
+ case $bad_seen in
+ 0) state=$TERM_BAD ; bad_seen=1 ;;
+ *) state=$TERM_GOOD ;;
+ esac
+ eval="$eval bisect_write '$state' '$rev' 'nolog' &&"
+ done
#
# Verify HEAD.
#