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
}
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"
}
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 ;;
fi &&
rm -f "$D/.git/objects/sample" &&
cd "$repo" &&
- find objects -type f -print |
- cpio -puamd$l "$D/.git/" || exit 1
+ find objects -depth -print | cpio -puamd$l "$D/.git/" || exit 1
;;
yes)
mkdir -p "$D/.git/objects/info"
;;
esac
-# Update origin.
-mkdir -p "$D/.git/remotes/" &&
-rm -f "$D/.git/remotes/origin" &&
-echo >"$D/.git/remotes/origin" \
-"URL: $repo
-Pull: master:origin"
+cd $D || exit
+
+if test -f ".git/HEAD"
+then
+ head_points_at=`git-symbolic-ref HEAD`
+ case "$head_points_at" in
+ refs/heads/*)
+ head_points_at=`expr "$head_points_at" : 'refs/heads/\(.*\)'`
+ mkdir -p .git/remotes &&
+ echo >.git/remotes/origin \
+ "URL: $repo
+Pull: $head_points_at:origin" &&
+ cp ".git/refs/heads/$head_points_at" .git/refs/heads/origin &&
+ find .git/refs/heads -type f -print |
+ while read ref
+ do
+ head=`expr "$ref" : '.git/refs/heads/\(.*\)'` &&
+ test "$head_points_at" = "$head" ||
+ test "origin" = "$head" ||
+ echo "Pull: ${head}:${head}"
+ done >>.git/remotes/origin
+ esac
+
+ case "$no_checkout" in
+ '')
+ git checkout
+ esac
+fi