diff options
author | Ross Brattain <ross.b.brattain@intel.com> | 2017-06-23 04:11:24 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2017-06-23 04:11:24 +0000 |
commit | 417df8187c1ddb04066409db6b2360b85c894b65 (patch) | |
tree | 4f46a11f83c3a92b64a2e6a253b5dc77e3ee6e01 | |
parent | b2ebe10ed516a99fe16b6bfad04b3797e8821ee0 (diff) | |
parent | 6f825c7a95549824545b66fe3ab5b3ed53905a44 (diff) |
Merge "improve git code with devstack functions"
-rwxr-xr-x | docker/exec_tests.sh | 86 |
1 files changed, 67 insertions, 19 deletions
diff --git a/docker/exec_tests.sh b/docker/exec_tests.sh index 9726e2b4a..46e5a05bd 100755 --- a/docker/exec_tests.sh +++ b/docker/exec_tests.sh @@ -17,39 +17,87 @@ set -e : ${RELENG_REPO:='https://gerrit.opnfv.org/gerrit/releng'} : ${RELENG_REPO_DIR:='/home/opnfv/repos/releng'} # TEMP HACK to freeze releng version to workaround fetch_os_creds.sh problem -: ${RELENG_BRANCH:='abbf19f'} # branch, tag, sha1 or refspec +: ${RELENG_BRANCH:='master'} # branch, tag, sha1 or refspec + +# git update using reference as a branch. +# git_update_branch ref +function git_update_branch { + local git_branch=$1 + + git checkout -f origin/${git_branch} + # a local branch might not exist + git branch -D ${git_branch} || true + git checkout -b ${git_branch} +} + +# git update using reference as a branch. +# git_update_remote_branch ref +function git_update_remote_branch { + local git_branch=$1 + + git checkout -b ${git_branch} -t origin/${git_branch} +} + +# git update using reference as a tag. Be careful editing source at that repo +# as working copy will be in a detached mode +# git_update_tag ref +function git_update_tag { + local git_tag=$1 + + git tag -d ${git_tag} + # fetching given tag only + git fetch origin tag ${git_tag} + git checkout -f ${git_tag} +} + + +# OpenStack Functions git_checkout() { - if git cat-file -e $1^{commit} 2>/dev/null; then - # branch, tag or sha1 object - git checkout $1 && git pull - else + local git_ref=$1 + if [[ -n "$(git show-ref refs/tags/${git_ref})" ]]; then + git_update_tag "${git_ref}" + elif [[ -n "$(git show-ref refs/heads/${git_ref})" ]]; then + git_update_branch "${git_ref}" + elif [[ -n "$(git show-ref refs/remotes/origin/${git_ref})" ]]; then + git_update_remote_branch "${git_ref}" + # check to see if it is a remote ref + elif git fetch --tags origin "${git_ref}"; then # refspec / changeset - git fetch --tags --progress $2 $1 git checkout FETCH_HEAD + else + # if we are a random commit id we have to unshallow + # to get all the commits + git fetch --unshallow origin + git checkout -f "${git_ref}" fi } echo -echo "INFO: Updating releng -> $RELENG_BRANCH" -if [ ! -d $RELENG_REPO_DIR ]; then - git clone $RELENG_REPO $RELENG_REPO_DIR +echo "INFO: Updating releng -> ${RELENG_BRANCH}" +if [ ! -d ${RELENG_REPO_DIR} ]; then + git clone ${RELENG_REPO} ${RELENG_REPO_DIR} fi -cd $RELENG_REPO_DIR -git checkout master -git_checkout $RELENG_BRANCH $RELENG_REPO +cd ${RELENG_REPO_DIR} +# reset remote so we know origin is valid +git remote set-url origin ${RELENG_REPO} +# fetch the exact ref +git fetch --tags origin ${RELENG_BRANCH} || true +# purge pyc files +find . -name '*.pyc' -delete +git_checkout ${RELENG_BRANCH} echo -echo "INFO: Updating yardstick -> $YARDSTICK_BRANCH" -if [ ! -d $YARDSTICK_REPO_DIR ]; then - git clone $YARDSTICK_REPO $YARDSTICK_REPO_DIR +echo "INFO: Updating yardstick -> ${YARDSTICK_BRANCH}" +if [ ! -d ${YARDSTICK_REPO_DIR} ]; then + git clone ${YARDSTICK_REPO} ${YARDSTICK_REPO_DIR} fi -cd $YARDSTICK_REPO_DIR -git_checkout $YARDSTICK_BRANCH $YARDSTICK_REPO +cd ${YARDSTICK_REPO_DIR} +git_checkout ${YARDSTICK_BRANCH} # setup the environment -source $YARDSTICK_REPO_DIR/tests/ci/prepare_env.sh +source ${YARDSTICK_REPO_DIR}/tests/ci/prepare_env.sh # execute tests -$YARDSTICK_REPO_DIR/tests/ci/yardstick-verify $@ +${YARDSTICK_REPO_DIR}/tests/ci/yardstick-verify $@ |