Skip to content

Commit

Permalink
bisect: don't mix option parsing and non-trivial code
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Matthieu Moy authored and Junio C Hamano committed Aug 3, 2015
1 parent cb46d63 commit 4a6ada3
Showing 1 changed file with 17 additions and 13 deletions.
30 changes: 17 additions & 13 deletions git-bisect.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.
#
Expand Down

0 comments on commit 4a6ada3

Please sign in to comment.