revision.c: explain what tree_difference does
[gitweb.git] / git-fetch.sh
index f438ac1ef2351e902980e5a896d84b693589d430..9d45dd266a8110a2d39fe29ffeb84aacb6053623 100755 (executable)
@@ -24,6 +24,8 @@ update_head_ok=
 exec=
 keep=
 shallow_depth=
+no_progress=
+test -t 1 || no_progress=--no-progress
 while case "$#" in 0) break ;; esac
 do
        case "$1" in
@@ -114,14 +116,6 @@ append_fetch_head () {
                git-fetch--tool $flags append-fetch-head "$@"
 }
 
-update_local_ref () {
-       flags=
-       test -n "$verbose" && flags="$flags -v"
-       test -n "$force" && flags="$flags -f"
-       GIT_REFLOG_ACTION="$GIT_REFLOG_ACTION" \
-               git-fetch--tool $flags update-local-ref "$@"
-}
-
 # updating the current HEAD with git-fetch in a bare
 # repository is always fine.
 if test -z "$update_head_ok" && test $(is_bare_repository) = false
@@ -171,8 +165,16 @@ fetch_native () {
     ( : subshell because we muck with IFS
       IFS="    $LF"
       (
-         git-fetch-pack --thin $exec $keep $shallow_depth "$remote" $rref ||
+       if test -f "$remote" ; then
+           test -n "$shallow_depth" &&
+               die "shallow clone with bundle is not supported"
+           git-bundle unbundle "$remote" $rref ||
+           echo failed "$remote"
+       else
+         git-fetch-pack --thin $exec $keep $shallow_depth $no_progress \
+               "$remote" $rref ||
          echo failed "$remote"
+       fi
       ) |
       (
        flags=