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>
This commit is contained in:
parent
c5e09c1fbe
commit
810255fd12
@ -49,9 +49,16 @@ bisect_start() {
|
|||||||
die "Bad HEAD - I need a symbolic ref"
|
die "Bad HEAD - I need a symbolic ref"
|
||||||
case "$head" in
|
case "$head" in
|
||||||
refs/heads/bisect*)
|
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/*)
|
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"
|
die "Bad HEAD - strange symbolic ref"
|
||||||
@ -159,7 +166,11 @@ bisect_visualize() {
|
|||||||
|
|
||||||
bisect_reset() {
|
bisect_reset() {
|
||||||
case "$#" in
|
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" || {
|
1) test -f "$GIT_DIR/refs/heads/$1" || {
|
||||||
echo >&2 "$1 does not seem to be a valid branch"
|
echo >&2 "$1 does not seem to be a valid branch"
|
||||||
exit 1
|
exit 1
|
||||||
@ -170,7 +181,7 @@ bisect_reset() {
|
|||||||
esac
|
esac
|
||||||
git checkout "$branch" &&
|
git checkout "$branch" &&
|
||||||
rm -fr "$GIT_DIR/refs/bisect"
|
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"
|
rm -f "$GIT_DIR/BISECT_LOG"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user