support/download/git: fix shellcheck errors

The quoting around the expansion of ${relative_dir} was indeed incorrect
since it was introduced back in 8fe9894f65 (suport/download: fix git
wrapper with submodules on older git versions): it is in fact already
quoted as part of the whole sed expression.

${GIT} can contain more than one item, but we don't care about splitting
on spaces when we just print it for debug, so we can just quote it
rather than add an exception.

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
(cherry picked from commit bcee3ca6d6)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Yann E. MORIN
2023-09-13 00:15:51 +02:00
committed by Peter Korsgaard
parent 6c11a91e2a
commit 9384659d6a
2 changed files with 7 additions and 3 deletions

View File

@@ -1727,7 +1727,6 @@ support/download/check-hash Shellcheck
support/download/cvs Shellcheck support/download/cvs Shellcheck
support/download/dl-wrapper Shellcheck support/download/dl-wrapper Shellcheck
support/download/file Shellcheck support/download/file Shellcheck
support/download/git Shellcheck
support/download/go-post-process Shellcheck support/download/go-post-process Shellcheck
support/download/hg Shellcheck support/download/hg Shellcheck
support/download/scp Shellcheck support/download/scp Shellcheck

View File

@@ -21,6 +21,7 @@ set -e
# Environment: # Environment:
# GIT : the git command to call # GIT : the git command to call
# shellcheck disable=SC1090 # Only provides mk_tar_gz()
. "${0%/*}/helpers" . "${0%/*}/helpers"
# Save our path and options in case we need to call ourselves again # Save our path and options in case we need to call ourselves again
@@ -83,12 +84,13 @@ set -E
# being expanded a second time (in case there are spaces in them) # being expanded a second time (in case there are spaces in them)
_git() { _git() {
if [ -z "${quiet}" ]; then if [ -z "${quiet}" ]; then
printf '%s ' GIT_DIR="${git_cache}/.git" ${GIT} "${@}"; printf '\n' printf '%s ' GIT_DIR="${git_cache}/.git" "${GIT}" "${@}"; printf '\n'
fi fi
_plain_git "$@" _plain_git "$@"
} }
# Note: please keep command below aligned with what is printed above # Note: please keep command below aligned with what is printed above
_plain_git() { _plain_git() {
# shellcheck disable=SC2086 # We want word-splitting for GIT
eval GIT_DIR="${git_cache}/.git" ${GIT} "${@}" eval GIT_DIR="${git_cache}/.git" ${GIT} "${@}"
} }
@@ -174,6 +176,7 @@ fi
# the working copy as well as the repository, which means submodules # the working copy as well as the repository, which means submodules
# will not be cached for older versions. # will not be cached for older versions.
# #
# shellcheck disable=SC2016 # Will be expanded by git-foreach
cmd='printf "Deregistering submodule \"%s\"\n" "${path}" && cd .. && rm -rf "${path##*/}"' cmd='printf "Deregistering submodule \"%s\"\n" "${path}" && cd .. && rm -rf "${path##*/}"'
_git submodule --quiet foreach "'${cmd}'" _git submodule --quiet foreach "'${cmd}'"
@@ -200,11 +203,12 @@ if [ ${recurse} -eq 1 ]; then
# that the archives are reproducible across a wider range of git # that the archives are reproducible across a wider range of git
# versions. However, we can't do that if git is too old and uses # versions. However, we can't do that if git is too old and uses
# full repositories for submodules. # full repositories for submodules.
# shellcheck disable=SC2016 # Will be expanded by git-foreach
cmd='printf "%s\n" "${path}/"' cmd='printf "%s\n" "${path}/"'
for module_dir in $( _plain_git submodule --quiet foreach "'${cmd}'" ); do for module_dir in $( _plain_git submodule --quiet foreach "'${cmd}'" ); do
[ -f "${module_dir}/.git" ] || continue [ -f "${module_dir}/.git" ] || continue
relative_dir="$( sed -r -e 's,/+,/,g; s,[^/]+/,../,g' <<<"${module_dir}" )" relative_dir="$( sed -r -e 's,/+,/,g; s,[^/]+/,../,g' <<<"${module_dir}" )"
sed -r -i -e "s:^gitdir\: $(pwd)/:gitdir\: "${relative_dir}":" "${module_dir}/.git" sed -r -i -e "s:^gitdir\: $(pwd)/:gitdir\: ${relative_dir}:" "${module_dir}/.git"
done done
fi fi
@@ -214,6 +218,7 @@ if [ ${large_file} -eq 1 ]; then
_git lfs fetch _git lfs fetch
_git lfs checkout _git lfs checkout
# If there are also submodules, recurse into them, # If there are also submodules, recurse into them,
# shellcheck disable=SC2086 # We want word-splitting for GIT
if [ ${recurse} -eq 1 ]; then if [ ${recurse} -eq 1 ]; then
_git submodule foreach --recursive ${GIT} lfs install --local _git submodule foreach --recursive ${GIT} lfs install --local
_git submodule foreach --recursive ${GIT} lfs fetch _git submodule foreach --recursive ${GIT} lfs fetch