Merge branch 'jc/refs-and-fetch'
authorJunio C Hamano <junkio@cox.net>
Wed, 1 Nov 2006 16:49:19 +0000 (08:49 -0800)
committerJunio C Hamano <junkio@cox.net>
Wed, 1 Nov 2006 16:49:19 +0000 (08:49 -0800)
* jc/refs-and-fetch:
git-fetch: adjust to packed-refs.

1  2 
git-fetch.sh
diff --combined git-fetch.sh
index fa73ad2260bb2a48308feed3c4670610f3eff7a7,216be0ccf393639af20696e08210dc3f26df4e88..539dff6ee05f7cfde20ea34a80a1e6bbdc1fbca2
@@@ -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
          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