diff --git a/scripts/get_git b/scripts/get_git index aea7656f53..7b8d0d087f 100755 --- a/scripts/get_git +++ b/scripts/get_git @@ -12,14 +12,14 @@ # PKG_GIT_SUBMODULE_DEPTH (optional) history of submodules to clone, must be a number _get_repo_already_downloaded() { - if [ -d $PACKAGE ]; then + if [ -d "${PACKAGE}" ]; then ( - cd $PACKAGE + cd "${PACKAGE}" _get_repo_clean - [ -n "$(git ls-remote . | grep -m1 HEAD | awk "/^${PKG_VERSION}/ {print \$1;}")" ] || exit 1 - [ "$PKG_URL" = "$(git remote get-url origin)" ] || exit 1 - [ -z "$PKG_GIT_CLONE_BRANCH" ] && exit 0 - [ "$PKG_GIT_CLONE_BRANCH" = "$(git branch | grep ^\* | cut -d ' ' -f2)" ] || exit 1 + [ -n "$(git ls-remote . | grep -m1 HEAD | awk "/^${PKG_VERSION}/ {print \$1;}")" ] || die "ERROR: ${PACKAGE}: failed to determine git HEAD" + [ "${PKG_URL}" = "$(git remote get-url origin)" ] || die "ERROR: ${PACKAGE}: failed to obtain URL of origin" + [ -z "${PKG_GIT_CLONE_BRANCH}" ] && exit 0 + [ "${PKG_GIT_CLONE_BRANCH}" = "$(git branch | grep ^\* | cut -d ' ' -f2)" ] || die "ERROR: ${PACKAGE}: failed to determine current git branch" exit 0 ) return @@ -36,104 +36,101 @@ _get_repo_clean() { # Latest file already present, exit now... _get_repo_already_downloaded && exit 0 -lock_source_dir $1 +lock_source_dir "${1}" # Check again in case of concurrent access - if nothing needs to be downloaded, exit now... _get_repo_already_downloaded && exit 0 # At this point, we need to download something... -printf "%${BUILD_INDENT}c $(print_color CLR_GET "GET") $1 (git)\n" ' '>&$SILENT_OUT -export BUILD_INDENT=$((${BUILD_INDENT:-1}+$BUILD_INDENT_SIZE)) +printf "%${BUILD_INDENT}c $(print_color CLR_GET "GET") ${1} (git)\n" ' '>&$SILENT_OUT +export BUILD_INDENT=$((${BUILD_INDENT:-1}+${BUILD_INDENT_SIZE})) -rm -f $STAMP_URL $STAMP_SHA +rm -f "${STAMP_URL}" "${STAMP_SHA}" GIT_CLONE_PARAMS="" GIT_SUBMODULE_PARAMS="" -[ -n "$PKG_GIT_CLONE_BRANCH" ] && GIT_CLONE_PARAMS="$GIT_CLONE_PARAMS --branch $PKG_GIT_CLONE_BRANCH" -[ "$PKG_GIT_CLONE_SINGLE" = "yes" ] && GIT_CLONE_PARAMS="$GIT_CLONE_PARAMS --single-branch" +[ -n "${PKG_GIT_CLONE_BRANCH}" ] && GIT_CLONE_PARAMS="${GIT_CLONE_PARAMS} --branch ${PKG_GIT_CLONE_BRANCH}" +[ "${PKG_GIT_CLONE_SINGLE}" = "yes" ] && GIT_CLONE_PARAMS="${GIT_CLONE_PARAMS} --single-branch" -if [ -n "$PKG_GIT_CLONE_DEPTH" ]; then - if [[ $PKG_GIT_CLONE_DEPTH =~ ^[0-9]+$ ]]; then - GIT_CLONE_PARAMS="$GIT_CLONE_PARAMS --depth $PKG_GIT_CLONE_DEPTH" +if [ -n "${PKG_GIT_CLONE_DEPTH}" ]; then + if [[ "${PKG_GIT_CLONE_DEPTH}" =~ ^[0-9]+$ ]]; then + GIT_CLONE_PARAMS="$GIT_CLONE_PARAMS --depth ${PKG_GIT_CLONE_DEPTH}" else - echo "Fatal: PKG_GIT_CLONE_DEPTH is not a number! ($PKG_GIT_CLONE_DEPTH)" - exit 1 + die "ERROR: PKG_GIT_CLONE_DEPTH is not a number! (${PKG_GIT_CLONE_DEPTH})" fi fi -if [ -n "$PKG_GIT_SUBMODULE_DEPTH" ]; then - if [[ $PKG_GIT_SUBMODULE_DEPTH =~ ^[0-9]+$ ]]; then - GIT_SUBMODULE_PARAMS="$GIT_SUBMODULE_PARAMS --depth $PKG_GIT_SUBMODULE_DEPTH" +if [ -n "${PKG_GIT_SUBMODULE_DEPTH}" ]; then + if [[ "${PKG_GIT_SUBMODULE_DEPTH}" =~ ^[0-9]+$ ]]; then + GIT_SUBMODULE_PARAMS="${GIT_SUBMODULE_PARAMS} --depth ${PKG_GIT_SUBMODULE_DEPTH}" else - echo "Fatal: PKG_GIT_SUBMODULE_DEPTH is not a number! ($PKG_GIT_SUBMODULE_DEPTH)" - exit 1 + die "ERROR: PKG_GIT_SUBMODULE_DEPTH is not a number! (${PKG_GIT_SUBMODULE_DEPTH})" fi fi GIT_FOUND="no" opwd=$(pwd) -for d in $SOURCES/$1/$1-* ; do - if [ -d "$d/.git" ]; then +for d in "${SOURCES}/${1}/${1}-"* ; do + if [ -d "${d}/.git" ]; then if [ "${GIT_FOUND}" = "no" ]; then - cd $d - if [ "$PKG_URL" = "$(git remote get-url origin)" ]; then - if [ -n "$PKG_GIT_CLONE_BRANCH" -a $(git branch | grep "^\* ${PKG_GIT_CLONE_BRANCH}$" | wc -l) -eq 1 -o -z "$PKG_GIT_CLONE_BRANCH" ]; then + cd "${d}" + if [ "${PKG_URL}" = "$(git remote get-url origin)" ]; then + if [[ -z "${PKG_GIT_CLONE_BRANCH}"]] || [[ $(git branch | grep "^\* ${PKG_GIT_CLONE_BRANCH}$" | wc -l) -eq 1 ]]; then GIT_FOUND="yes" - GIT_DIR="$d" + GIT_DIR="${d}" _get_repo_clean - elif [ -n "$PKG_GIT_CLONE_BRANCH" -a $(git branch | grep "^ ${PKG_GIT_CLONE_BRANCH}$" | wc -l) -eq 1 ]; then + elif [ $(git branch | grep "^ ${PKG_GIT_CLONE_BRANCH}$" | wc -l) -eq 1 ]; then GIT_FOUND="yes" - GIT_DIR="$d" + GIT_DIR="${d}" _get_repo_clean - git checkout $PKG_GIT_CLONE_BRANCH - elif [ -n "$PKG_GIT_CLONE_BRANCH" -a $(git branch -a | grep "^ remotes/origin/${PKG_GIT_CLONE_BRANCH}$" | wc -l) -eq 1 ]; then + git checkout "${PKG_GIT_CLONE_BRANCH}" + elif [ $(git branch -a | grep "^ remotes/origin/${PKG_GIT_CLONE_BRANCH}$" | wc -l) -eq 1 ]; then GIT_FOUND="yes" - GIT_DIR="$d" + GIT_DIR="${d}" _get_repo_clean - git checkout -b $PKG_GIT_CLONE_BRANCH origin/$PKG_GIT_CLONE_BRANCH + git checkout -b "${PKG_GIT_CLONE_BRANCH}" "origin/${PKG_GIT_CLONE_BRANCH}" else - printf "%${BUILD_INDENT}c $(print_color CLR_CLEAN "DELETE") ($d)\n" ' '>&$SILENT_OUT + printf "%${BUILD_INDENT}c $(print_color CLR_CLEAN "DELETE") (${d})\n" ' '>&$SILENT_OUT cd "${opwd}" - rm -rf "$d" + rm -rf "${d}" fi if [ "$GIT_FOUND" = "yes" ]; then - printf "%${BUILD_INDENT}c $(print_color CLR_GET "GIT PULL") $1\n" ' '>&$SILENT_OUT + printf "%${BUILD_INDENT}c $(print_color CLR_GET "GIT PULL") ${1}\n" ' '>&$SILENT_OUT git pull cd "${opwd}" fi else - printf "%${BUILD_INDENT}c $(print_color CLR_CLEAN "DELETE") ($d)\n" ' '>&$SILENT_OUT + printf "%${BUILD_INDENT}c $(print_color CLR_CLEAN "DELETE") (${d})\n" ' '>&$SILENT_OUT cd "${opwd}" - rm -rf "$d" + rm -rf "${d}" fi - else - printf "%${BUILD_INDENT}c $(print_color CLR_CLEAN "DELETE") ($d)\n" ' '>&$SILENT_OUT - rm -rf "$d" fi + else + printf "%${BUILD_INDENT}c $(print_color CLR_CLEAN "DELETE") (${d})\n" ' '>&$SILENT_OUT + rm -rf "${d}" fi done cd "${opwd}" if [ "${GIT_FOUND}" = "no" ]; then - printf "%${BUILD_INDENT}c $(print_color CLR_GET "GIT CLONE") $1\n" ' '>&$SILENT_OUT - git clone $GIT_CLONE_PARAMS $PKG_URL $PACKAGE + printf "%${BUILD_INDENT}c $(print_color CLR_GET "GIT CLONE") ${1}\n" ' '>&$SILENT_OUT + git clone "${GIT_CLONE_PARAMS}" "${PKG_URL}" "${PACKAGE}" else if [ ! "${GIT_DIR}" = "${PACKAGE}" ]; then mv "${GIT_DIR}" "${PACKAGE}" fi fi -( - cd $PACKAGE - [ $(git log --oneline --pretty=tformat:"%H" | grep "^$PKG_VERSION" | wc -l) -eq 1 ] || { echo "There is no commit '$PKG_VERSION' on branch '$(git branch | grep ^\* | cut -d ' ' -f2)' of package '$1'! Aborting!" ; exit 1 ; } - git reset --hard $PKG_VERSION - printf "%${BUILD_INDENT}c $(print_color CLR_GET "GIT SUBMODULE") $1\n" ' '>&$SILENT_OUT - git submodule update --init --recursive $GIT_SUBMODULE_PARAMS +( cd "${PACKAGE}" + [ $(git log --oneline --pretty=tformat:"%H" | grep "^${PKG_VERSION}" | wc -l) -eq 1 ] || die "There is no commit '${PKG_VERSION}' on branch '$(git branch | grep ^\* | cut -d ' ' -f2)' of package '${1}'! Aborting!" + git reset --hard "${PKG_VERSION}" + printf "%${BUILD_INDENT}c $(print_color CLR_GET "GIT SUBMODULE") ${1}\n" ' '>&$SILENT_OUT + git submodule update --init --recursive "${GIT_SUBMODULE_PARAMS}" ) -GIT_SHA=$(git ls-remote $PACKAGE | grep -m1 HEAD | awk '{print $1;}') +GIT_SHA=$(git ls-remote "${PACKAGE}" | grep -m1 HEAD | awk '{print $1;}') -if [ -n "$PKG_GIT_SHA" ]; then - [ "$PKG_GIT_SHA" = "$GIT_SHA" ] || printf "%${BUILD_INDENT}c $(print_color CLR_WARNING "WARNING") Incorrect git hash in respository: got ${GIT_SHA}, wanted ${PKG_GIT_SHA}\n\n" ' '>&$SILENT_OUT +if [ -n "${PKG_GIT_SHA}" ]; then + [ "${PKG_GIT_SHA}" = "${GIT_SHA}" ] || printf "%${BUILD_INDENT}c $(print_color CLR_WARNING "WARNING") Incorrect git hash in respository: got ${GIT_SHA}, wanted ${PKG_GIT_SHA}\n\n" ' '>&$SILENT_OUT fi