[PATCH] Retitle 'inspecting what happened' section.
[git.git] / git-clone.sh
index c076292..44135f4 100755 (executable)
@@ -5,6 +5,9 @@
 # 
 # Clone a repository into a different directory that does not yet exist.
 
+# See git-sh-setup why.
+unset CDPATH
+
 usage() {
        echo >&2 "* git clone [-l [-s]] [-q] [-u <upload-pack>] <repo> <dir>"
        exit 1
@@ -141,8 +144,33 @@ yes,yes)
 *)
        case "$repo" in
        rsync://*)
-               rsync $quiet -avz --ignore-existing "$repo/objects/" "$D/.git/objects/" &&
-               rsync $quiet -avz --ignore-existing "$repo/refs/" "$D/.git/refs/"
+               rsync $quiet -av --ignore-existing  \
+                       --exclude info "$repo/objects/" "$D/.git/objects/" &&
+               rsync $quiet -av --ignore-existing  \
+                       --exclude info "$repo/refs/" "$D/.git/refs/" || exit
+
+               # Look at objects/info/alternates for rsync -- http will
+               # support it natively and git native ones will do it on the
+               # remote end.  Not having that file is not a crime.
+               rsync -q "$repo/objects/info/alternates" \
+                       "$D/.git/TMP_ALT" 2>/dev/null ||
+                       rm -f "$D/.git/TMP_ALT"
+               if test -f "$D/.git/TMP_ALT"
+               then
+                   ( cd $D &&
+                     . git-parse-remote &&
+                     resolve_alternates "$repo" <"./.git/TMP_ALT" ) |
+                   while read alt
+                   do
+                       case "$alt" in 'bad alternate: '*) die "$alt";; esac
+                       case "$quiet" in
+                       '')     echo >&2 "Getting alternate: $alt" ;;
+                       esac
+                       rsync $quiet -av --ignore-existing  \
+                           --exclude info "$alt" "$D/.git/objects" || exit
+                   done
+                   rm -f "$D/.git/TMP_ALT"
+               fi
                ;;
        http://*)
                clone_dumb_http "$repo" "$D"