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

[PATCH 1/2 v2] bisect: fix "git bisect skip <commit>" and add tests cases

From
Christian Couder <chriscool@tuxfamily.org>
Date
Dec 2, 2008, 13:53 UTC
Message-ID
<20081202145347.90403957.chriscool@tuxfamily.org>

The patch that allows "git bisect skip" to be passed a range of commits using the "<commit1>..<commit2>" notation is flawed because it introduces a regression when it was passed a simple rev or commit.

"git bisect skip <commit>" doesn't work any more, because <commit> is quoted but not properly unquoted.

This patch fixes that and add tests cases to better check when it is passed commits and range of commits.

While at it, this patch also properly quotes the non range arguments using the "sq" function.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 git-bisect.sh               |    4 ++--
 t/t6030-bisect-porcelain.sh |   19 ++++++++++++++++++-
 2 files changed, 20 insertions(+), 3 deletions(-)
	Change since previous version: now properly quote any non
	range argument using "sq" (in patch 1/2).
diff --git a/git-bisect.sh b/git-bisect.sh
index 6706bc1..ddbdba8 100755
--- a/git-bisect.sh
+++ b/git-bisect.sh
@@ -199,11 +199,11 @@ bisect_skip() {
             *..*)
                 revs=$(git rev-list "$arg") || die "Bad rev input: $arg" ;;
             *)
-                revs="'$arg'" ;;
+                revs=$(sq "$arg") ;;
 	    esac
             all="$all $revs"
         done
-        bisect_state 'skip' $all
+        eval bisect_state 'skip' $all
 }
 
 bisect_state() {
diff --git a/t/t6030-bisect-porcelain.sh b/t/t6030-bisect-porcelain.sh
index 85fa39c..dd7eac8 100755
--- a/t/t6030-bisect-porcelain.sh
+++ b/t/t6030-bisect-porcelain.sh
@@ -313,8 +313,25 @@ test_expect_success 'bisect run & skip: find first bad' '
 	grep "$HASH6 is first bad commit" my_bisect_log.txt
 '
 
-test_expect_success 'bisect starting with a detached HEAD' '
+test_expect_success 'bisect skip only one range' '
+	git bisect reset &&
+	git bisect start $HASH7 $HASH1 &&
+	git bisect skip $HASH1..$HASH5 &&
+	test "$HASH6" = "$(git rev-parse --verify HEAD)" &&
+	test_must_fail git bisect bad > my_bisect_log.txt &&
+	grep "first bad commit could be any of" my_bisect_log.txt
+'
 
+test_expect_success 'bisect skip many ranges' '
+	git bisect start $HASH7 $HASH1 &&
+	test "$HASH4" = "$(git rev-parse --verify HEAD)" &&
+	git bisect skip $HASH2 $HASH2.. ..$HASH5 &&
+	test "$HASH6" = "$(git rev-parse --verify HEAD)" &&
+	test_must_fail git bisect bad > my_bisect_log.txt &&
+	grep "first bad commit could be any of" my_bisect_log.txt
+'
+
+test_expect_success 'bisect starting with a detached HEAD' '
 	git bisect reset &&
 	git checkout master^ &&
 	HEAD=$(git rev-parse --verify HEAD) &&
-- 
1.6.0.4.838.g4ea49
Message 1 of 1 in “bisect: fix "git bisect skip <commit>" and add tests cases”
  1. 1/2 bisect: fix "git bisect skip <commit>" and add tests casesChristian Couder, Dec 2, 2008

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.