Browse Source

Merge branch 'maint'

* maint:
  checkout: do not get confused with ambiguous tag/branch names
maint
Junio C Hamano 18 years ago
parent
commit
abc403f584
  1. 3
      git-checkout.sh
  2. 40
      t/t7201-co.sh

3
git-checkout.sh

@ -63,12 +63,13 @@ while [ "$#" != "0" ]; do @@ -63,12 +63,13 @@ while [ "$#" != "0" ]; do
echo "unknown flag $arg"
exit 1
fi
new="$rev"
new_name="$arg"
if git-show-ref --verify --quiet -- "refs/heads/$arg"
then
rev=$(git-rev-parse --verify "refs/heads/$arg^0")
branch="$arg"
fi
new="$rev"
elif rev=$(git-rev-parse --verify "$arg^{tree}" 2>/dev/null)
then
# checking out selected paths from a tree-ish.

40
t/t7201-co.sh

@ -190,4 +190,44 @@ test_expect_success 'checkout to detach HEAD with HEAD^0' ' @@ -190,4 +190,44 @@ test_expect_success 'checkout to detach HEAD with HEAD^0' '
fi
'

test_expect_success 'checkout with ambiguous tag/branch names' '

git tag both side &&
git branch both master &&
git reset --hard &&
git checkout master &&

git checkout both &&
H=$(git rev-parse --verify HEAD) &&
M=$(git show-ref -s --verify refs/heads/master) &&
test "z$H" = "z$M" &&
name=$(git symbolic-ref HEAD 2>/dev/null) &&
test "z$name" = zrefs/heads/both

'

test_expect_success 'checkout with ambiguous tag/branch names' '

git reset --hard &&
git checkout master &&

git tag frotz side &&
git branch frotz master &&
git reset --hard &&
git checkout master &&

git checkout tags/frotz &&
H=$(git rev-parse --verify HEAD) &&
S=$(git show-ref -s --verify refs/heads/side) &&
test "z$H" = "z$S" &&
if name=$(git symbolic-ref HEAD 2>/dev/null)
then
echo "Bad -- should have detached"
false
else
: happy
fi

'

test_done

Loading…
Cancel
Save