1234567891011121314151617181920212223242526272829303132333435363738 |
- #!/bin/bash
- # We want to catch any unexpected failure, and exit immediately
- set -e
- # Download helper for git, to be called from the download wrapper script
- # Expected arguments:
- # $1: output file
- # $2: git repo
- # $3: git cset
- # $4: package's basename (eg. foobar-1.2.3)
- # And this environment:
- # GIT : the git command to call
- output="${1}"
- repo="${2}"
- cset="${3}"
- basename="${4}"
- # Try to see if we can do a shallow clone, since it is faster
- # than a full clone.
- if [ -n "$(${GIT} ls-remote "${repo}" "${cset}" 2>&1)" ]; then
- printf "Doing shallow clone\n"
- if ${GIT} clone --depth 1 -b "${cset}" --bare "${repo}" "${basename}"; then
- git_done=1
- else
- printf "Shallow clone failed, falling back to doing a full clone\n"
- fi
- fi
- if [ ${git_done} -eq 0 ]; then
- printf "Doing full clone\n"
- ${GIT} clone --bare "${repo}" "${basename}"
- fi
- GIT_DIR="${basename}" \
- ${GIT} archive --prefix="${basename}/" -o "${output}" --format=tar "${cset}"
- gzip "${output}"
|