projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] Audit rev-parse users.
[git.git]
/
git-clone-script
diff --git
a/git-clone-script
b/git-clone-script
index
01707e9
..
88e2c1f
100755
(executable)
--- a/
git-clone-script
+++ b/
git-clone-script
@@
-6,7
+6,7
@@
# Clone a repository into a different directory that does not yet exist.
usage() {
# Clone a repository into a different directory that does not yet exist.
usage() {
- echo >&2 "* git clone [-l] <repo> <dir>"
+ echo >&2 "* git clone [-l]
[-q] [-u <upload-pack>]
<repo> <dir>"
exit 1
}
exit 1
}
@@
-14,11
+14,18
@@
get_repo_base() {
(cd "$1" && (cd .git ; pwd)) 2> /dev/null
}
(cd "$1" && (cd .git ; pwd)) 2> /dev/null
}
+quiet=
use_local=no
use_local=no
+upload_pack=
while
case "$#,$1" in
0,*) break ;;
*,-l|*,--l|*,--lo|*,--loc|*,--loca|*,--local) use_local=yes ;;
while
case "$#,$1" in
0,*) break ;;
*,-l|*,--l|*,--lo|*,--loc|*,--loca|*,--local) use_local=yes ;;
+ *,-q|*,--quiet) quiet=-q ;;
+ 1,-u|*,--upload-pack) usage ;;
+ *,-u|*,--upload-pack)
+ shift
+ upload_pack="--exec=$2" ;;
*,-*) usage ;;
*) break ;;
esac
*,-*) usage ;;
*) break ;;
esac
@@
-46,11
+53,8
@@
test -d "$D" || usage
case "$local,$use_local" in
yes,yes)
( cd "$repo/objects" ) || {
case "$local,$use_local" in
yes,yes)
( cd "$repo/objects" ) || {
- repo="$repo/.git"
- ( cd "$repo/objects" ) || {
- echo >&2 "-l flag seen but $repo is not local."
- exit 1
- }
+ echo >&2 "-l flag seen but $repo is not local."
+ exit 1
}
# See if we can hardlink and drop "l" if not.
}
# See if we can hardlink and drop "l" if not.
@@
-66,7
+70,9
@@
yes,yes)
l=l
fi &&
rm -f "$D/.git/objects/sample" &&
l=l
fi &&
rm -f "$D/.git/objects/sample" &&
- cp -r$l "$repo/objects" "$D/.git/" || exit 1
+ cd "$repo" &&
+ find objects -type f -print |
+ cpio -puamd$l "$D/.git/" || exit 1
# Make a duplicate of refs and HEAD pointer
HEAD=
# Make a duplicate of refs and HEAD pointer
HEAD=
@@
-81,14
+87,17
@@
esac
case "$repo" in
rsync://*)
case "$repo" in
rsync://*)
- rsync -avz --ignore-existing "$repo/objects/" "$D/.git/objects/" &&
- rsync -avz --ignore-existing "$repo/refs/" "$D/.git/refs/"
+ rsync
$quiet
-avz --ignore-existing "$repo/objects/" "$D/.git/objects/" &&
+ rsync
$quiet
-avz --ignore-existing "$repo/refs/" "$D/.git/refs/"
;;
http://*)
echo "Somebody should add http fetch" >&2
exit 1
;;
*)
;;
http://*)
echo "Somebody should add http fetch" >&2
exit 1
;;
*)
- cd "$D" && git-clone-pack "$repo"
+ cd "$D" && case "$upload_pack" in
+ '') git-clone-pack $quiet "$repo" ;;
+ *) git-clone-pack $quiet "$upload_pack" "$repo" ;;
+ esac
;;
esac
;;
esac