aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Verdoolaege <skimo@liacs.nl>2007-06-29 10:31:08 +0200
committerJunio C Hamano <gitster@pobox.com>2007-07-02 01:33:44 -0700
commit59c93929c8b98b7be00496d61fae8979bab1841d (patch)
tree96a073b6157c1169912933b431a98af5cf1ef52d
parentbffe71f4cd44b8050e7561b9f9245febb8b21f0a (diff)
downloadgit-59c93929c8b98b7be00496d61fae8979bab1841d.tar.gz
git-59c93929c8b98b7be00496d61fae8979bab1841d.tar.xz
git-clone: fetch possibly detached HEAD over dumb http
git-clone supports cloning from a repo with detached HEAD, but if this HEAD is not behind any branch tip then it would not have been fetched over dumb http, resulting in a fatal: Not a valid object name HEAD Since 928c210a, this would also happen on a http repo with a HEAD that is a symbolic link where someone has forgotton to run update-server-info. Signed-off-by: Sven Verdoolaege <skimo@liacs.nl> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-clone.sh11
1 files changed, 11 insertions, 0 deletions
diff --git a/git-clone.sh b/git-clone.sh
index bd44ce1c8..4cbf60f55 100755
--- a/git-clone.sh
+++ b/git-clone.sh
@@ -72,6 +72,17 @@ Perhaps git-update-server-info needs to be run there?"
rm -fr "$clone_tmp"
http_fetch "$1/HEAD" "$GIT_DIR/REMOTE_HEAD" ||
rm -f "$GIT_DIR/REMOTE_HEAD"
+ if test -f "$GIT_DIR/REMOTE_HEAD"; then
+ head_sha1=`cat "$GIT_DIR/REMOTE_HEAD"`
+ case "$head_sha1" in
+ 'ref: refs/'*)
+ ;;
+ *)
+ git-http-fetch $v -a "$head_sha1" "$1" ||
+ rm -f "$GIT_DIR/REMOTE_HEAD"
+ ;;
+ esac
+ fi
}
quiet=