mirror of
https://github.com/git/git
synced 2024-10-29 17:08:46 +00:00
Merge branch 'jc/checkout' (early part)
* 'jc/checkout' (early part): checkout: allow detaching to HEAD even when switching to the tip of a branch
This commit is contained in:
commit
b7108a16a6
2 changed files with 64 additions and 3 deletions
|
@ -170,7 +170,7 @@ describe_detached_head () {
|
|||
}
|
||||
}
|
||||
|
||||
if test -z "$branch$newbranch" && test "$new" != "$old"
|
||||
if test -z "$branch$newbranch" && test "$new_name" != "$old_name"
|
||||
then
|
||||
detached="$new"
|
||||
if test -n "$oldbranch" && test -z "$quiet"
|
||||
|
@ -180,7 +180,7 @@ If you want to create a new branch from this checkout, you may do so
|
|||
(now or later) by using -b with the checkout command again. Example:
|
||||
git checkout -b <new_branch_name>"
|
||||
fi
|
||||
elif test -z "$oldbranch"
|
||||
elif test -z "$oldbranch" && test "$new" != "$old"
|
||||
then
|
||||
describe_detached_head 'Previous HEAD position was' "$old"
|
||||
fi
|
||||
|
|
|
@ -3,7 +3,20 @@
|
|||
# Copyright (c) 2006 Junio C Hamano
|
||||
#
|
||||
|
||||
test_description='git-checkout tests.'
|
||||
test_description='git-checkout tests.
|
||||
|
||||
Creates master, forks renamer and side branches from it.
|
||||
Test switching across them.
|
||||
|
||||
! [master] Initial A one, A two
|
||||
* [renamer] Renamer R one->uno, M two
|
||||
! [side] Side M one, D two, A three
|
||||
---
|
||||
+ [side] Side M one, D two, A three
|
||||
* [renamer] Renamer R one->uno, M two
|
||||
+*+ [master] Initial A one, A two
|
||||
|
||||
'
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
|
@ -129,4 +142,52 @@ test_expect_success 'checkout -m with merge conflict' '
|
|||
! test -s current
|
||||
'
|
||||
|
||||
test_expect_success 'checkout to detach HEAD' '
|
||||
|
||||
git checkout -f renamer && git clean &&
|
||||
git checkout renamer^ &&
|
||||
H=$(git rev-parse --verify HEAD) &&
|
||||
M=$(git show-ref -s --verify refs/heads/master) &&
|
||||
test "z$H" = "z$M" &&
|
||||
if git symbolic-ref HEAD >/dev/null 2>&1
|
||||
then
|
||||
echo "OOPS, HEAD is still symbolic???"
|
||||
false
|
||||
else
|
||||
: happy
|
||||
fi
|
||||
'
|
||||
|
||||
test_expect_success 'checkout to detach HEAD with branchname^' '
|
||||
|
||||
git checkout -f master && git clean &&
|
||||
git checkout renamer^ &&
|
||||
H=$(git rev-parse --verify HEAD) &&
|
||||
M=$(git show-ref -s --verify refs/heads/master) &&
|
||||
test "z$H" = "z$M" &&
|
||||
if git symbolic-ref HEAD >/dev/null 2>&1
|
||||
then
|
||||
echo "OOPS, HEAD is still symbolic???"
|
||||
false
|
||||
else
|
||||
: happy
|
||||
fi
|
||||
'
|
||||
|
||||
test_expect_success 'checkout to detach HEAD with HEAD^0' '
|
||||
|
||||
git checkout -f master && git clean &&
|
||||
git checkout HEAD^0 &&
|
||||
H=$(git rev-parse --verify HEAD) &&
|
||||
M=$(git show-ref -s --verify refs/heads/master) &&
|
||||
test "z$H" = "z$M" &&
|
||||
if git symbolic-ref HEAD >/dev/null 2>&1
|
||||
then
|
||||
echo "OOPS, HEAD is still symbolic???"
|
||||
false
|
||||
else
|
||||
: happy
|
||||
fi
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Loading…
Reference in a new issue