From 96155e55e175e7fed1d8ebd73557d339f35629d8 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 25 Jul 2005 22:42:18 -0700 Subject: Fetch from a packed repository on dumb servers. Implement fetching from a packed repository over http/https using the dumb server support files. I consider some parts of the logic should be in a separate C program, but it appears to work with my simple tests. I have backburnered it for a bit too long for my liking, so let's throw it out in the open and see what happens. Signed-off-by: Junio C Hamano --- git-fetch-script | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'git-fetch-script') diff --git a/git-fetch-script b/git-fetch-script index 34ddfc8cb..2040c125f 100755 --- a/git-fetch-script +++ b/git-fetch-script @@ -13,9 +13,29 @@ http://* | https://*) if [ -n "$GIT_SSL_NO_VERIFY" ]; then curl_extra_args="-k" fi - head=$(curl -ns $curl_extra_args "$merge_repo/$merge_head") || exit 1 + _x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' && + _x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40" && + head=$(curl -ns $curl_extra_args "$merge_repo/$merge_head") && + expr "$head" : "$_x40\$" >/dev/null || { + echo >&2 "Failed to fetch $merge_head from $merge_repo" + exit 1 + } + git-fetch-dumb-http "$head" "$@" + case "$?" in + 0) ;; + 2) no_dumb_http_support=1 ;; + *) exit;; + esac echo Fetching "$merge_head" using http - git-http-pull -v -a "$head" "$merge_repo/" + git-http-pull -v -a "$head" "$merge_repo/" || { + case "$no_dumb_http_support" in + 1) + echo >&2 "* This could be because the $merge_repo is packed without" + echo >&2 " preparing dumb server support files." + ;; + esac + exit 1 + } ;; rsync://*) rsync -L "$merge_repo/$merge_head" "$TMP_HEAD" || exit 1 -- cgit v1.2.1