Browse Source

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>
maint
Jeff King 18 years ago committed by Junio C Hamano
parent
commit
a74b1706c8
  1. 4
      Documentation/git-symbolic-ref.txt
  2. 13
      git-pull.sh

4
Documentation/git-symbolic-ref.txt

@ -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>

13
git-pull.sh

@ -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."

Loading…
Cancel
Save