Browse Source

Merge branch 'jc/checkout' (early part)

* 'jc/checkout' (early part):
  checkout: allow detaching to HEAD even when switching to the tip of a branch
maint
Junio C Hamano 18 years ago
parent
commit
b7108a16a6
  1. 4
      git-checkout.sh
  2. 63
      t/t7201-co.sh

4
git-checkout.sh

@ -170,7 +170,7 @@ describe_detached_head () { @@ -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 @@ -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

63
t/t7201-co.sh

@ -3,7 +3,20 @@ @@ -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' ' @@ -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…
Cancel
Save