diff options
author | Petr Baudis <pasky@suse.cz> | 2006-02-12 17:06:14 +0100 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-02-12 13:07:02 -0800 |
commit | 810255fd12536d296597a0366f514bf65c2e10f6 (patch) | |
tree | fbc9e0e9664e6f4b62c7107604b4f41a310672bb /git-bisect.sh | |
parent | c5e09c1fbec5dc1c15bcfe21e1a600f9e4b4e419 (diff) | |
download | git-810255fd12536d296597a0366f514bf65c2e10f6.tar.gz git-810255fd12536d296597a0366f514bf65c2e10f6.tar.xz |
Properly git-bisect reset after bisecting from non-master head
git-bisect reset without an argument would return to master even
if the bisecting started at a non-master branch. This patch makes
it save the original branch name to .git/head-name and restore it
afterwards.
This is also compatible with Cogito and cg-seek, so cg-status will
show that we are seeked on the bisect branch and cg-reset will
properly restore the original branch.
git-bisect start will refuse to work if it is not on a bisect but
.git/head-name exists; this is to protect against conflicts with
other seeking tools.
Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'git-bisect.sh')
-rwxr-xr-x | git-bisect.sh | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/git-bisect.sh b/git-bisect.sh index 51e1e4417..3c024aae7 100755 --- a/git-bisect.sh +++ b/git-bisect.sh @@ -49,9 +49,16 @@ bisect_start() { die "Bad HEAD - I need a symbolic ref" case "$head" in refs/heads/bisect*) - git checkout master || exit + if [ -s "$GIT_DIR/head-name" ]; then + branch=`cat "$GIT_DIR/head-name"` + else + branch=master + fi + git checkout $branch || exit ;; refs/heads/*) + [ -s "$GIT_DIR/head-name" ] && die "won't bisect on seeked tree" + echo "$head" | sed 's#^refs/heads/##' >"$GIT_DIR/head-name" ;; *) die "Bad HEAD - strange symbolic ref" @@ -159,7 +166,11 @@ bisect_visualize() { bisect_reset() { case "$#" in - 0) branch=master ;; + 0) if [ -s "$GIT_DIR/head-name" ]; then + branch=`cat "$GIT_DIR/head-name"` + else + branch=master + fi ;; 1) test -f "$GIT_DIR/refs/heads/$1" || { echo >&2 "$1 does not seem to be a valid branch" exit 1 @@ -170,7 +181,7 @@ bisect_reset() { esac git checkout "$branch" && rm -fr "$GIT_DIR/refs/bisect" - rm -f "$GIT_DIR/refs/heads/bisect" + rm -f "$GIT_DIR/refs/heads/bisect" "$GIT_DIR/head-name" rm -f "$GIT_DIR/BISECT_LOG" } |