summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xsupport/download/git17
1 files changed, 14 insertions, 3 deletions
diff --git a/support/download/git b/support/download/git
index d8094d2601..45802d3dd1 100755
--- a/support/download/git
+++ b/support/download/git
@@ -6,15 +6,20 @@ set -e
# Download helper for git, to be called from the download wrapper script
#
# Call it as:
-# .../git [-q] OUT_FILE REPO_URL CSET BASENAME
+# .../git [-q] [-r] OUT_FILE REPO_URL CSET BASENAME
+#
+# -q Be quiet.
+# -r Clone and archive sub-modules.
#
# Environment:
# GIT : the git command to call
verbose=
-while getopts :q OPT; do
+recurse=0
+while getopts :qr OPT; do
case "${OPT}" in
q) verbose=-q; exec >/dev/null;;
+ r) recurse=1;;
\?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;;
esac
done
@@ -65,13 +70,19 @@ if ! _git fetch origin "'${cset}:${cset}'" >/dev/null 2>&1; then
printf "Could not fetch special ref '%s'; assuming it is not special.\n" "${cset}"
fi
-# Checkout the required changeset.
+# Checkout the required changeset, so that we can update the required
+# submodules.
_git checkout -q "'${cset}'"
# Get date of commit to generate a reproducible archive.
# %cD is RFC2822, so it's fully qualified, with TZ and all.
date="$( _git show --no-patch --pretty=format:%cD )"
+# There might be submodules, so fetch them.
+if [ ${recurse} -eq 1 ]; then
+ _git submodule update --init --recursive
+fi
+
# We do not need the .git dir and other gitfiles to generate the tarball
find . \( -name .git -o -name .gitmodules -o -name .gitignore \) \
-exec rm -rf {} +
OpenPOWER on IntegriCloud