git-upload-pack: Support sending multiple ACK messages
[git.git] / git-clone.sh
index a322a45..18e692a 100755 (executable)
@@ -9,7 +9,7 @@
 unset CDPATH
 
 usage() {
-       echo >&2 "* git clone [-l [-s]] [-q] [-u <upload-pack>] <repo> <dir>"
+       echo >&2 "* git clone [-l [-s]] [-q] [-u <upload-pack>] [-n] <repo> <dir>"
        exit 1
 }
 
@@ -53,7 +53,11 @@ Perhaps git-update-server-info needs to be run there?"
        while read sha1 refname
        do
                name=`expr "$refname" : 'refs/\(.*\)'` &&
-               git-http-fetch -v -a -w "$name" "$name" "$1/" || exit 1
+               case "$name" in
+               *^*)    ;;
+               *)
+                       git-http-fetch -v -a -w "$name" "$name" "$1/" || exit 1
+               esac
        done <"$clone_tmp/refs"
        rm -fr "$clone_tmp"
 }
@@ -61,10 +65,12 @@ Perhaps git-update-server-info needs to be run there?"
 quiet=
 use_local=no
 local_shared=no
+no_checkout=
 upload_pack=
 while
        case "$#,$1" in
        0,*) break ;;
+       *,-n) no_checkout=yes ;;
        *,-l|*,--l|*,--lo|*,--loc|*,--loca|*,--local) use_local=yes ;;
         *,-s|*,--s|*,--sh|*,--sha|*,--shar|*,--share|*,--shared) 
           local_shared=yes ;;
@@ -186,9 +192,16 @@ yes,yes)
        ;;
 esac
 
-# Update origin.
-mkdir -p "$D/.git/remotes/" &&
-rm -f "$D/.git/remotes/origin" &&
-echo >"$D/.git/remotes/origin" \
-"URL: $repo
+cd $D || exit
+
+if test -f ".git/HEAD"
+then
+       mkdir -p .git/remotes || exit
+       echo >.git/remotes/origin \
+       "URL: $repo
 Pull: master:origin"
+       case "$no_checkout" in
+       '')
+               git checkout
+       esac
+fi