From: Junio C Hamano Date: Wed, 1 Nov 2006 16:49:19 +0000 (-0800) Subject: Merge branch 'jc/refs-and-fetch' X-Git-Tag: v1.4.4-rc1~43 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/e0d68cd5d95fc15342db38c211f71efe5bcfbe94?ds=inline;hp=-c Merge branch 'jc/refs-and-fetch' * jc/refs-and-fetch: git-fetch: adjust to packed-refs. --- e0d68cd5d95fc15342db38c211f71efe5bcfbe94 diff --combined git-fetch.sh index fa73ad2260,216be0ccf3..539dff6ee0 --- a/git-fetch.sh +++ b/git-fetch.sh @@@ -147,15 -147,15 +147,15 @@@ update_local_ref () [ "$verbose" ] && echo >&2 " $label_: $newshort_" return 0 fi - oldshort_=$(git-rev-parse --short "$1" 2>/dev/null) - mkdir -p "$(dirname "$GIT_DIR/$1")" + oldshort_=$(git show-ref --hash --abbrev "$1" 2>/dev/null) + case "$1" in refs/tags/*) # Tags need not be pointing at commits so there # is no way to guarantee "fast-forward" anyway. - if test -f "$GIT_DIR/$1" + if test -n "$oldshort_" then - if now_=$(cat "$GIT_DIR/$1") && test "$now_" = "$2" + if now_=$(git show-ref --hash "$1") && test "$now_" = "$2" then [ "$verbose" ] && echo >&2 "* $1: same as $3" [ "$verbose" ] && echo >&2 " $label_: $newshort_" ||: @@@ -296,7 -296,6 +296,7 @@@ fetch_main () # There are transports that can fetch only one head at a time... case "$remote" in http://* | https://* | ftp://*) + proto=`expr "$remote" : '\([^:]*\):'` if [ -n "$GIT_SSL_NO_VERIFY" ]; then curl_extra_args="-k" fi @@@ -320,7 -319,7 +320,7 @@@ done expr "z$head" : "z$_x40\$" >/dev/null || die "Failed to fetch $remote_name from $remote" - echo >&2 Fetching "$remote_name from $remote" using http + echo >&2 "Fetching $remote_name from $remote using $proto" git-http-fetch -v -a "$head" "$remote/" || exit ;; rsync://*) @@@ -427,7 -426,7 +427,7 @@@ case "$no_tags$tags" i sed -ne 's|^\([0-9a-f]*\)[ ]\(refs/tags/.*\)^{}$|\1 \2|p' | while read sha1 name do - test -f "$GIT_DIR/$name" && continue + git-show-ref --verify --quiet -- $name && continue git-check-ref-format "$name" || { echo >&2 "warning: tag ${name} ignored" continue @@@ -446,10 -445,10 +446,10 @@@ esa # If the original head was empty (i.e. no "master" yet), or # if we were told not to worry, we do not have to check. -case ",$update_head_ok,$orig_head," in -*,, | t,* ) +case "$orig_head" in +'') ;; -*) +?*) curr_head=$(git-rev-parse --verify HEAD 2>/dev/null) if test "$curr_head" != "$orig_head" then