diff options
author | Sven Verdoolaege <skimo@liacs.nl> | 2007-06-29 10:31:08 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-07-02 01:33:44 -0700 |
commit | 59c93929c8b98b7be00496d61fae8979bab1841d (patch) | |
tree | 96a073b6157c1169912933b431a98af5cf1ef52d | |
parent | bffe71f4cd44b8050e7561b9f9245febb8b21f0a (diff) | |
download | git-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-x | git-clone.sh | 11 |
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= |