git-pull: disallow implicit merging to detached HEAD

Instead, we complain to the user and suggest that they explicitly
specify the remote and branch. We depend on the exit status of
git-symbolic-ref, so let's go ahead and document that.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Jeff King 2007-01-15 17:25:33 -05:00 committed by Junio C Hamano
parent a0f4280f9e
commit a74b1706c8
2 changed files with 15 additions and 2 deletions

View file

@ -44,6 +44,10 @@ cumbersome. On some platforms, `ln -sf` does not even work as
advertised (horrors). Therefore symbolic links are now deprecated advertised (horrors). Therefore symbolic links are now deprecated
and symbolic refs are used by default. and symbolic refs are used by default.
git-symbolic-ref will exit with status 0 if the contents of the
symbolic ref were printed correctly, with status 1 if the requested
name is not a symbolic ref, or 128 if another error occurs.
Author Author
------ ------
Written by Junio C Hamano <junkio@cox.net> Written by Junio C Hamano <junkio@cox.net>

View file

@ -83,8 +83,17 @@ merge_head=$(sed -e '/ not-for-merge /d' \
case "$merge_head" in case "$merge_head" in
'') '')
curr_branch=$(git-symbolic-ref HEAD | \ curr_branch=$(git-symbolic-ref -q HEAD)
sed -e 's|^refs/heads/||') case $? in
0) ;;
1) echo >&2 "You are not currently on a branch; you must explicitly"
echo >&2 "specify which branch you wish to merge:"
echo >&2 " git pull <remote> <branch>"
exit 1;;
*) exit $?;;
esac
curr_branch=${curr_branch#refs/heads/}
echo >&2 "Warning: No merge candidate found because value of config option echo >&2 "Warning: No merge candidate found because value of config option
\"branch.${curr_branch}.merge\" does not match any remote branch fetched." \"branch.${curr_branch}.merge\" does not match any remote branch fetched."
echo >&2 "No changes." echo >&2 "No changes."