summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2007-01-15 22:25:33 (GMT)
committerJunio C Hamano <junkio@cox.net>2007-01-15 23:37:22 (GMT)
commita74b1706c89c5e966c64316575e0b33dd21b8128 (patch)
tree715fa28328a866548a5101e87537aa94a1708e61
parenta0f4280f9e5decd384fe5cc9e30414b901aeb478 (diff)
downloadgit-a74b1706c89c5e966c64316575e0b33dd21b8128.zip
git-a74b1706c89c5e966c64316575e0b33dd21b8128.tar.gz
git-a74b1706c89c5e966c64316575e0b33dd21b8128.tar.bz2
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>
-rw-r--r--Documentation/git-symbolic-ref.txt4
-rwxr-xr-xgit-pull.sh13
2 files changed, 15 insertions, 2 deletions
diff --git a/Documentation/git-symbolic-ref.txt b/Documentation/git-symbolic-ref.txt
index 1e818bb..fec3b4f 100644
--- a/Documentation/git-symbolic-ref.txt
+++ b/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
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>
diff --git a/git-pull.sh b/git-pull.sh
index 9592617..a3665d7 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -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."