Skip to content

Commit

Permalink
git-pull: disallow implicit merging to detached HEAD
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jeff King authored and Junio C Hamano committed Jan 15, 2007
1 parent a0f4280 commit a74b170
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
4 changes: 4 additions & 0 deletions Documentation/git-symbolic-ref.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ cumbersome. On some platforms, `ln -sf` does not even work as
advertised (horrors). Therefore symbolic links are now deprecated
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
------
Written by Junio C Hamano <junkio@cox.net>
Expand Down
13 changes: 11 additions & 2 deletions git-pull.sh
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,17 @@ merge_head=$(sed -e '/ not-for-merge /d' \

case "$merge_head" in
'')
curr_branch=$(git-symbolic-ref HEAD | \
sed -e 's|^refs/heads/||')
curr_branch=$(git-symbolic-ref -q HEAD)
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
\"branch.${curr_branch}.merge\" does not match any remote branch fetched."
echo >&2 "No changes."
Expand Down

0 comments on commit a74b170

Please sign in to comment.