git-bisect: modernize branch shuffling hack
authorJunio C Hamano <gitster@pobox.com>
Thu, 15 Nov 2007 08:47:53 +0000 (00:47 -0800)
committerJunio C Hamano <gitster@pobox.com>
Fri, 16 Nov 2007 09:35:58 +0000 (01:35 -0800)
When switching to a new rev, we first made "new-bisect" branch to
point at the chosen commit, attempt to switch to it, and then
finally renamed the new-bisect branch to bisect by hand when
successful.  This is so that we can catch checkout failure (your
local modification may interfere with switching to the chosen
version) without losing information on which commit the next
attempt should be made.

Rewrite it using a more modern form but without breaking the
safety.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-bisect.sh

index 4b74a7bb421e35627bf749316027707237210e7a..dae8a8e9806040bd396692f118f3887f5f043ed1 100755 (executable)
@@ -316,10 +316,9 @@ bisect_next() {
        exit_if_skipped_commits "$bisect_rev"
 
        echo "Bisecting: $bisect_nr revisions left to test after this"
-       echo "$bisect_rev" >"$GIT_DIR/refs/heads/new-bisect"
+       git branch -f new-bisect "$bisect_rev"
        git checkout -q new-bisect || exit
-       mv "$GIT_DIR/refs/heads/new-bisect" "$GIT_DIR/refs/heads/bisect" &&
-       GIT_DIR="$GIT_DIR" git symbolic-ref HEAD refs/heads/bisect
+       git branch -M new-bisect bisect
        git show-branch "$bisect_rev"
 }