Skip to content

Commit

Permalink
bisect: Log possibly bad, skipped commits at bisection end
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Torstein Hegge authored and Junio C Hamano committed Apr 23, 2013
1 parent 118f60e commit f989cac
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 0 deletions.
10 changes: 10 additions & 0 deletions git-bisect.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
20 changes: 20 additions & 0 deletions t/t6030-bisect-porcelain.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit f989cac

Please sign in to comment.