summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorstein Hegge <hegge@resisty.net>2013-04-22 23:02:29 +0200
committerJunio C Hamano <gitster@pobox.com>2013-04-23 09:09:44 -0700
commitf989cac9581ee423457c02f67d6bf31348ae6b56 (patch)
tree1ccc60f48d01efa42d02907007d19e635a59b113
parent118f60ee06612083ff4f1810424e80a3e896f73e (diff)
downloadgit-f989cac9581ee423457c02f67d6bf31348ae6b56.tar.gz
bisect: Log possibly bad, skipped commits at bisection end
If the bisection completes with only skipped commits left to as possible first bad commit, output the list of possible first bad commits to human readers of the bisection log. Signed-off-by: Torstein Hegge <hegge@resisty.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-bisect.sh10
-rwxr-xr-xt/t6030-bisect-porcelain.sh20
2 files changed, 30 insertions, 0 deletions
diff --git a/git-bisect.sh b/git-bisect.sh
index c58eea7cb6..d7518e9c3b 100755
--- a/git-bisect.sh
+++ b/git-bisect.sh
@@ -317,6 +317,16 @@ bisect_next() {
bad_commit=$(git show-branch $bad_rev)
echo "# first bad commit: $bad_commit" >>"$GIT_DIR/BISECT_LOG"
exit 0
+ elif test $res -eq 2
+ then
+ echo "# only skipped commits left to test" >>"$GIT_DIR/BISECT_LOG"
+ good_revs=$(git for-each-ref --format="--not %(objectname)" "refs/bisect/good-*")
+ for skipped in $(git rev-list refs/bisect/bad $good_revs)
+ do
+ skipped_commit=$(git show-branch $skipped)
+ echo "# possible first bad commit: $skipped_commit" >>"$GIT_DIR/BISECT_LOG"
+ done
+ exit $res
fi
# Check for an error in the bisection process
diff --git a/t/t6030-bisect-porcelain.sh b/t/t6030-bisect-porcelain.sh
index 4d3074a45c..064f5cefeb 100755
--- a/t/t6030-bisect-porcelain.sh
+++ b/t/t6030-bisect-porcelain.sh
@@ -759,4 +759,24 @@ test_expect_success 'bisect log: successfull result' '
git bisect reset
'
+cat > expected.bisect-skip-log <<EOF
+# bad: [32a594a3fdac2d57cf6d02987e30eec68511498c] Add <4: Ciao for now> into <hello>.
+# good: [7b7f204a749c3125d5224ed61ea2ae1187ad046f] Add <2: A new day for git> into <hello>.
+git bisect start '32a594a3fdac2d57cf6d02987e30eec68511498c' '7b7f204a749c3125d5224ed61ea2ae1187ad046f'
+# skip: [3de952f2416b6084f557ec417709eac740c6818c] Add <3: Another new day for git> into <hello>.
+git bisect skip 3de952f2416b6084f557ec417709eac740c6818c
+# only skipped commits left to test
+# possible first bad commit: [32a594a3fdac2d57cf6d02987e30eec68511498c] Add <4: Ciao for now> into <hello>.
+# possible first bad commit: [3de952f2416b6084f557ec417709eac740c6818c] Add <3: Another new day for git> into <hello>.
+EOF
+
+test_expect_success 'bisect log: only skip commits left' '
+ git bisect reset &&
+ git bisect start $HASH4 $HASH2 &&
+ test_must_fail git bisect skip &&
+ git bisect log >bisect-skip-log.txt &&
+ test_cmp expected.bisect-skip-log bisect-skip-log.txt &&
+ git bisect reset
+'
+
test_done