git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v11 06/10] bisect: don't mix option parsing and non-trivial code

From
Matthieu Moy <matthieu.moy@imag.fr>
Date
Jun 29, 2015, 15:40 UTC
Message-ID
<1435592435-27914-7-git-send-email-Matthieu.Moy@imag.fr>
In-Reply-To
<1435592435-27914-1-git-send-email-Matthieu.Moy@imag.fr>

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>
---
 git-bisect.sh | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)
diff --git a/git-bisect.sh b/git-bisect.sh
index dcd7e59..f32fd2d 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,25 +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.
 	#
-- 
2.5.0.rc0.10.gd2bff5d
Previous: Matthieu MoyNext: Junio C Hamano
Message 7 of 15 in “bisect terms”
  1. 00/10 bisect termsMatthieu Moy, Jun 29, 2015
  2. 01/10 bisect: correction of typoMatthieu Moy, Jun 29, 2015
  3. 02/10 Documentation/bisect: move getting help section to the endMatthieu Moy, Jun 29, 2015
  4. 03/10 Documentation/bisect: revise overall contentMatthieu Moy, Jun 29, 2015
  5. 04/10 bisect: replace hardcoded "bad|good" by variablesMatthieu Moy, Jun 29, 2015
  6. 05/10 bisect: simplify the addition of new bisect termsMatthieu Moy, Jun 29, 2015
  7. 06/10 bisect: don't mix option parsing and non-trivial codeMatthieu Moy, Jun 29, 2015
  8. Junio C HamanoJun 29, 2015
  9. Matthieu MoyJun 30, 2015
  10. Junio C HamanoJun 30, 2015
  11. 07/10 bisect: sanity check on termsMatthieu Moy, Jun 29, 2015
  12. 08/10 bisect: add the terms old/newMatthieu Moy, Jun 29, 2015
  13. 09/10 bisect: add 'git bisect terms' to view the current termsMatthieu Moy, Jun 29, 2015
  14. 10/10 bisect: allow setting any user-specified in 'git bisect start'Matthieu Moy, Jun 29, 2015
  15. Junio C HamanoJun 29, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.