summaryrefslogtreecommitdiff
path: root/git-fetch-dumb-http
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-08-01 07:41:49 (GMT)
committerJunio C Hamano <junkio@cox.net>2005-08-01 07:41:49 (GMT)
commit0f2b4c4654a046bc2ccaeafd3340450edf4aeb7e (patch)
tree28b23775b72ee9c41a47bbf808049a42c6fa6f75 /git-fetch-dumb-http
parent182005b954d81b2a08162de93511ca238b242bea (diff)
downloadgit-0f2b4c4654a046bc2ccaeafd3340450edf4aeb7e.zip
git-0f2b4c4654a046bc2ccaeafd3340450edf4aeb7e.tar.gz
git-0f2b4c4654a046bc2ccaeafd3340450edf4aeb7e.tar.bz2
Retire git-fetch-dumb-http and missing-revs
Now git-http-pull knows how to do packed repo, retire scripted hacks I placed as a stop-gap measure. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'git-fetch-dumb-http')
-rwxr-xr-xgit-fetch-dumb-http100
1 files changed, 0 insertions, 100 deletions
diff --git a/git-fetch-dumb-http b/git-fetch-dumb-http
deleted file mode 100755
index 0034296..0000000
--- a/git-fetch-dumb-http
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2005, Junio C Hamano
-#
-# Called by git-fetch-script
-# Exits 2 when the remote site does not support dumb server protocol.
-
-# Usage: git-fetch-dumb-http <head-SHA1> <repo> [ <head> | tag <tag> ]
-
-. git-sh-setup-script || die "Not a git archive"
-head="$1"
-shift
-. git-parse-remote "$@"
-
-merge_repo="$_remote_repo"
-merge_head="$_remote_head"
-merge_store="$_remote_store"
-
-if [ -n "$GIT_SSL_NO_VERIFY" ]; then
- curl_extra_args="-k"
-fi
-http_fetch () {
- # $1 = Remote, $2 = Local
- curl -ns $curl_extra_args "$1" >"$2"
-}
-
-# Try dumb server protocol
-
-clone_tmp=".git/clone-tmp$$" &&
-mkdir -p "$clone_tmp" || exit 1
-trap "rm -rf $clone_tmp" 0 1 2 3 15
-http_fetch "$merge_repo/info/refs" "$clone_tmp/refs" &&
-http_fetch "$merge_repo/objects/info/packs" "$clone_tmp/packs" &&
-http_fetch "$merge_repo/info/rev-cache" "$clone_tmp/rev-cache" || exit 2
-
-# Which packs are we interested in?
-has_missing=,
-while read tag num sha1 type
-do
- case "$tag" in
- T) ;;
- *) continue ;;
- esac
- git-cat-file -t "$sha1" >/dev/null || has_missing="$has_missing$num,"
-done <$clone_tmp/packs
-
-# Slurp the pack index we do not have all objects for.
-pack_ix=0
-may_want_pack_count=0
-while read tag pack
-do
- case "$tag" in
- P) ;;
- *) break ;; # P records always come first.
- esac
- case "$has_missing" in
- *",$pack_ix,"*)
- name=`expr "$pack" : '\(.*\)\.pack$'` &&
- idx="$name.idx" &&
- http_fetch "$merge_repo/objects/pack/$idx" "$clone_tmp/$idx" &&
- # Note that idx file is sorted --- otherwise we need to sort it here.
- git-show-index <"$clone_tmp/$idx" |
- sed -e 's/^[^ ]* //' >"$clone_tmp/$name.toc" ||
- exit 1
- may_want_pack_count=`expr "$may_want_pack_count" + 1`
- ;;
- esac
- pack_ix=`expr "$pack_ix" + 1`
-done <$clone_tmp/packs
-
-case "$may_want_pack_count" in
-0)
- exit 0 ;;
-esac
-
-# We want $head. What are the head objects we are missing?
-git-missing-revs $clone_tmp/rev-cache $head >$clone_tmp/missing-revs &&
-sort -o $clone_tmp/missing-revs $clone_tmp/missing-revs || exit 2
-
-for toc in $clone_tmp/*.toc
-do
- name=`expr $toc : '.*/\([^/]*\)\.toc'` &&
- comm -12 $clone_tmp/missing-revs $toc >$clone_tmp/$name.can
- # FIXME: this is stupid.
- if test -s $clone_tmp/$name.can
- then
- pack="$name.pack" idx="$name.idx" &&
- http_fetch "$merge_repo/objects/pack/$pack" "$clone_tmp/$pack" &&
- git-verify-pack "$clone_tmp/$pack" &&
- mkdir -p "$GIT_OBJECT_DIRECTORY/pack" &&
- mv "$clone_tmp/$pack" "$clone_tmp/$idx" \
- "$GIT_OBJECT_DIRECTORY/pack/" || {
- # remote may just have a stale dumb server information files.
- # and normal pull might succeed.
- exit 2
- }
- fi
-done
-
-exit 0