diff --git a/functions b/functions index a80d06d471..a3e95370fb 100644 --- a/functions +++ b/functions @@ -142,6 +142,8 @@ GetOSVersion() { # be owned by the installation user, we create the directory and change the # ownership to the proper user. # Set global RECLONE=yes to simulate a clone when dest-dir exists +# Set global ERROR_ON_CLONE=True to abort execution with an error if the git repo +# does not exist (default is False, meaning the repo will be cloned). # git_clone remote dest-dir branch function git_clone { [[ "$OFFLINE" = "True" ]] && return @@ -153,6 +155,7 @@ function git_clone { if echo $GIT_BRANCH | egrep -q "^refs"; then # If our branch name is a gerrit style refs/changes/... if [[ ! -d $GIT_DEST ]]; then + [[ "$ERROR_ON_CLONE" = "True" ]] && exit 1 git clone $GIT_REMOTE $GIT_DEST fi cd $GIT_DEST @@ -160,6 +163,7 @@ function git_clone { else # do a full clone only if the directory doesn't exist if [[ ! -d $GIT_DEST ]]; then + [[ "$ERROR_ON_CLONE" = "True" ]] && exit 1 git clone $GIT_REMOTE $GIT_DEST cd $GIT_DEST # This checkout syntax works for both branches and tags diff --git a/stack.sh b/stack.sh index 3bb19bccbf..f11b5e24d1 100755 --- a/stack.sh +++ b/stack.sh @@ -214,6 +214,11 @@ fi # prerequisites and initialize ``$DEST``. OFFLINE=`trueorfalse False $OFFLINE` +# Set True to configure ``stack.sh`` to exit with an error code if it is asked +# to clone any git repositories. If devstack is used in a testing environment, +# this may be used to ensure that the correct code is being tested. +ERROR_ON_CLONE=`trueorfalse False $ERROR_ON_CLONE` + # Destination path for service data DATA_DIR=${DATA_DIR:-${DEST}/data} sudo mkdir -p $DATA_DIR