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

[PATCH v11 07/10] bisect: sanity check on terms

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

This is currently only a defensive check since the only terms are bad/good and new/old, which pass it, but this is a preparation step for accepting user-supplied terms.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 git-bisect.sh | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)
diff --git a/git-bisect.sh b/git-bisect.sh
index f32fd2d..0b3c820 100755
--- a/git-bisect.sh
+++ b/git-bisect.sh
@@ -535,9 +535,42 @@ get_terms () {
 write_terms () {
 	TERM_BAD=$1
 	TERM_GOOD=$2
+	if test "$TERM_BAD" = "$TERM_GOOD"
+	then
+		die "$(gettext "please use two different terms")"
+	fi
+	check_term_format "$TERM_BAD" bad
+	check_term_format "$TERM_GOOD" good
 	printf '%s\n%s\n' "$TERM_BAD" "$TERM_GOOD" >"$GIT_DIR/BISECT_TERMS"
 }
 
+check_term_format () {
+	term=$1
+	git check-ref-format refs/bisect/"$term" ||
+	die "$(eval_gettext "'\$term' is not a valid term")"
+	case "$term" in
+	help|start|terms|skip|next|reset|visualize|replay|log|run)
+		die "$(eval_gettext "can't use the builtin command '\$term' as a term")"
+		;;
+	bad|new)
+		if test "$2" != bad
+		then
+			# In theory, nothing prevents swapping
+			# completely good and bad, but this situation
+			# could be confusing and hasn't been tested
+			# enough. Forbid it for now.
+			die "$(eval_gettext "can't change the meaning of term '\$term'")"
+		fi
+		;;
+	good|old)
+		if test "$2" != good
+		then
+			die "$(eval_gettext "can't change the meaning of term '\$term'")"
+		fi
+		;;
+	esac
+}
+
 check_and_set_terms () {
 	cmd="$1"
 	case "$cmd" in
-- 
2.5.0.rc0.10.gd2bff5d
Previous: Junio C HamanoNext: Matthieu Moy
Message 11 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.