git-bisect: make "start", "good" and "skip" succeed or fail atomically
authorChristian Couder <chriscool@tuxfamily.org>
Mon, 14 Apr 2008 03:41:45 +0000 (05:41 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 16 Apr 2008 07:11:37 +0000 (00:11 -0700)
commitd3e54c88291c2d880ff3a72167c5d3159aed8e97
treee1592f97734229af5ef9c59628b2856d574e07ed
parent2e6e3e829f3759823d70e7af511bc04cd05ad0af
git-bisect: make "start", "good" and "skip" succeed or fail atomically

Before this patch, when "git bisect start", "git bisect good" or
"git bisect skip" were called with many revisions, they could fail
after having already marked some revisions as "good", "bad" or
"skip".

This could be especilally bad for "git bisect start" because as
the file ".git/BISECT_NAMES" would not have been written, there
would have been no attempt to clear the marked revisions on a
"git bisect reset". That's because if there is no
".git/BISECT_NAMES" file, nothing is done to clean things up, as
the bisect session is not supposed to have started.

While at it, let's also create the ".git/BISECT_START" file, only
after ".git/BISECT_NAMES" as been created.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-bisect.sh
t/t6030-bisect-porcelain.sh