Merge branch 'maint'
* maint: checkout: do not get confused with ambiguous tag/branch names
This commit is contained in:
commit
abc403f584
@ -63,12 +63,13 @@ while [ "$#" != "0" ]; do
|
|||||||
echo "unknown flag $arg"
|
echo "unknown flag $arg"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
new="$rev"
|
|
||||||
new_name="$arg"
|
new_name="$arg"
|
||||||
if git-show-ref --verify --quiet -- "refs/heads/$arg"
|
if git-show-ref --verify --quiet -- "refs/heads/$arg"
|
||||||
then
|
then
|
||||||
|
rev=$(git-rev-parse --verify "refs/heads/$arg^0")
|
||||||
branch="$arg"
|
branch="$arg"
|
||||||
fi
|
fi
|
||||||
|
new="$rev"
|
||||||
elif rev=$(git-rev-parse --verify "$arg^{tree}" 2>/dev/null)
|
elif rev=$(git-rev-parse --verify "$arg^{tree}" 2>/dev/null)
|
||||||
then
|
then
|
||||||
# checking out selected paths from a tree-ish.
|
# checking out selected paths from a tree-ish.
|
||||||
|
@ -190,4 +190,44 @@ test_expect_success 'checkout to detach HEAD with HEAD^0' '
|
|||||||
fi
|
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
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user