summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Couder <chriscool@tuxfamily.org>2008-12-02 14:53:47 +0100
committerJunio C Hamano <gitster@pobox.com>2008-12-02 15:29:12 -0800
commit1a66a489d09e7b8629fa7e4184c78703f4eed335 (patch)
tree6a5a93e511e07990077661746dc76b3bb6c8f208
parentff3c0ff20e2c0b2c78d2c2da9ce4eb0739ff6ced (diff)
downloadgit-1a66a489d09e7b8629fa7e4184c78703f4eed335.tar.gz
bisect: fix "git bisect skip <commit>" and add tests cases
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>
-rwxr-xr-xgit-bisect.sh4
-rwxr-xr-xt/t6030-bisect-porcelain.sh19
2 files changed, 20 insertions, 3 deletions
diff --git a/git-bisect.sh b/git-bisect.sh
index 6706bc1e7c..ddbdba8af1 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 85fa39cf0b..dd7eac84ea 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) &&