core.logallrefupdates create new log file only for branch heads.
[gitweb.git] / git-fetch.sh
index 09a5d6ceab7875f2344f84d684ea5cc250786c64..e8a766818282d1ace559d4a5148927a656e2b492 100755 (executable)
@@ -68,11 +68,10 @@ done
 
 case "$#" in
 0)
-       test -f "$GIT_DIR/branches/origin" ||
-               test -f "$GIT_DIR/remotes/origin" ||
-                       git-repo-config --get remote.origin.url >/dev/null ||
-                               die "Where do you want to fetch from today?"
-       set origin ;;
+       origin=$(get_default_remote)
+       test -n "$(get_remote_url ${origin})" ||
+               die "Where do you want to fetch from today?"
+       set x $origin ; shift ;;
 esac
 
 remote_nick="$1"
@@ -258,6 +257,7 @@ fi
 fetch_main () {
   reflist="$1"
   refs=
+  rref=
 
   for ref in $reflist
   do
@@ -290,6 +290,10 @@ fetch_main () {
          if [ -n "$GIT_SSL_NO_VERIFY" ]; then
              curl_extra_args="-k"
          fi
+         if [ -n "$GIT_CURL_FTP_NO_EPSV" -o \
+               "`git-repo-config --bool http.noEPSV`" = true ]; then
+             noepsv_opt="--disable-epsv"
+         fi
          max_depth=5
          depth=0
          head="ref: $remote_name"
@@ -301,7 +305,7 @@ fetch_main () {
              $u =~ s{([^-a-zA-Z0-9/.])}{sprintf"%%%02x",ord($1)}eg;
              print "$u";
          ' "$head")
-           head=$(curl -nsfL $curl_extra_args "$remote/$remote_name_quoted")
+           head=$(curl -nsfL $curl_extra_args $noepsv_opt "$remote/$remote_name_quoted")
            depth=$( expr \( $depth + 1 \) )
          done
          expr "z$head" : "z$_x40\$" >/dev/null ||
@@ -413,7 +417,7 @@ case "$no_tags$tags" in
                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