Skip to content

Commit

Permalink
support/download/git: fix shellcheck errors
Browse files Browse the repository at this point in the history
The quoting around the expansion of ${relative_dir} was indeed incorrect
since it was introduced back in 8fe9894 (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 <[email protected]>
Signed-off-by: Thomas Petazzoni <[email protected]>
  • Loading branch information
yann-morin-1998 authored and tpetazzoni committed Sep 14, 2023
1 parent daa341c commit bcee3ca
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
1 change: 0 additions & 1 deletion .checkpackageignore
Original file line number Diff line number Diff line change
Expand Up @@ -1612,7 +1612,6 @@ support/download/check-hash Shellcheck
support/download/cvs Shellcheck
support/download/dl-wrapper Shellcheck
support/download/file Shellcheck
support/download/git Shellcheck
support/download/go-post-process Shellcheck
support/download/hg Shellcheck
support/download/scp Shellcheck
Expand Down
9 changes: 7 additions & 2 deletions support/download/git
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ set -e
# Environment:
# GIT : the git command to call

# shellcheck disable=SC1090 # Only provides mk_tar_gz()
. "${0%/*}/helpers"

# Save our path and options in case we need to call ourselves again
Expand Down Expand Up @@ -83,12 +84,13 @@ set -E
# being expanded a second time (in case there are spaces in them)
_git() {
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
_plain_git "$@"
}
# Note: please keep command below aligned with what is printed above
_plain_git() {
# shellcheck disable=SC2086 # We want word-splitting for GIT
eval GIT_DIR="${git_cache}/.git" ${GIT} "${@}"
}

Expand Down Expand Up @@ -174,6 +176,7 @@ fi
# the working copy as well as the repository, which means submodules
# 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##*/}"'
_git submodule --quiet foreach "'${cmd}'"

Expand All @@ -200,11 +203,12 @@ if [ ${recurse} -eq 1 ]; then
# 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
# full repositories for submodules.
# shellcheck disable=SC2016 # Will be expanded by git-foreach
cmd='printf "%s\n" "${path}/"'
for module_dir in $( _plain_git submodule --quiet foreach "'${cmd}'" ); do
[ -f "${module_dir}/.git" ] || continue
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
fi

Expand All @@ -214,6 +218,7 @@ if [ ${large_file} -eq 1 ]; then
_git lfs fetch
_git lfs checkout
# If there are also submodules, recurse into them,
# shellcheck disable=SC2086 # We want word-splitting for GIT
if [ ${recurse} -eq 1 ]; then
_git submodule foreach --recursive ${GIT} lfs install --local
_git submodule foreach --recursive ${GIT} lfs fetch
Expand Down

0 comments on commit bcee3ca

Please sign in to comment.