|
@@ -25,6 +25,12 @@ repo="${2}"
|
|
cset="${3}"
|
|
cset="${3}"
|
|
basename="${4}"
|
|
basename="${4}"
|
|
|
|
|
|
|
|
+# Caller needs to single-quote its arguments to prevent them from
|
|
|
|
+# being expanded a second time (in case there are spaces in them)
|
|
|
|
+_git() {
|
|
|
|
+ eval ${GIT} "${@}"
|
|
|
|
+}
|
|
|
|
+
|
|
# Try a shallow clone, since it is faster than a full clone - but that only
|
|
# Try a shallow clone, since it is faster than a full clone - but that only
|
|
# works if the version is a ref (tag or branch). Before trying to do a shallow
|
|
# works if the version is a ref (tag or branch). Before trying to do a shallow
|
|
# clone we check if ${cset} is in the list provided by git ls-remote. If not
|
|
# clone we check if ${cset} is in the list provided by git ls-remote. If not
|
|
@@ -33,9 +39,9 @@ basename="${4}"
|
|
# Messages for the type of clone used are provided to ease debugging in case of
|
|
# Messages for the type of clone used are provided to ease debugging in case of
|
|
# problems
|
|
# problems
|
|
git_done=0
|
|
git_done=0
|
|
-if [ -n "$(${GIT} ls-remote "${repo}" "${cset}" 2>&1)" ]; then
|
|
|
|
|
|
+if [ -n "$(_git ls-remote "'${repo}'" "'${cset}'" 2>&1)" ]; then
|
|
printf "Doing shallow clone\n"
|
|
printf "Doing shallow clone\n"
|
|
- if ${GIT} clone ${verbose} --depth 1 -b "${cset}" --bare "${repo}" "${basename}"; then
|
|
|
|
|
|
+ if _git clone ${verbose} --depth 1 -b "'${cset}'" --bare "'${repo}'" "'${basename}'"; then
|
|
git_done=1
|
|
git_done=1
|
|
else
|
|
else
|
|
printf "Shallow clone failed, falling back to doing a full clone\n"
|
|
printf "Shallow clone failed, falling back to doing a full clone\n"
|
|
@@ -43,10 +49,10 @@ if [ -n "$(${GIT} ls-remote "${repo}" "${cset}" 2>&1)" ]; then
|
|
fi
|
|
fi
|
|
if [ ${git_done} -eq 0 ]; then
|
|
if [ ${git_done} -eq 0 ]; then
|
|
printf "Doing full clone\n"
|
|
printf "Doing full clone\n"
|
|
- ${GIT} clone ${verbose} --mirror "${repo}" "${basename}"
|
|
|
|
|
|
+ _git clone ${verbose} --mirror "'${repo}'" "'${basename}'"
|
|
fi
|
|
fi
|
|
|
|
|
|
GIT_DIR="${basename}" \
|
|
GIT_DIR="${basename}" \
|
|
-${GIT} archive --prefix="${basename}/" -o "${output}.tmp" --format=tar "${cset}"
|
|
|
|
|
|
+_git archive --prefix="'${basename}/'" -o "'${output}.tmp'" --format=tar "'${cset}'"
|
|
|
|
|
|
gzip <"${output}.tmp" >"${output}"
|
|
gzip <"${output}.tmp" >"${output}"
|