| #!/bin/bash -e |
| |
| # Stolen from http://git.openstack.org/cgit/openstack-infra/config/plain/modules/jenkins/files/slave_scripts/gerrit-git-prep.sh but has been hacked to be AWESOME! |
| |
| GERRIT_SITE=$1 |
| ZUUL_SITE=$2 |
| GIT_ORIGIN=$3 |
| |
| if [ -z "$GERRIT_SITE" ] |
| then |
| echo "The gerrit site name (eg 'https://review.openstack.org') must be the first argument." |
| exit 1 |
| fi |
| |
| if [ -z "$ZUUL_SITE" ] |
| then |
| echo "The zuul site name (eg 'http://zuul.openstack.org') must be the second argument." |
| exit 1 |
| fi |
| |
| if [ -z "$GIT_ORIGIN" ] || [ -n "$ZUUL_NEWREV" ] |
| then |
| GIT_ORIGIN="$GERRIT_SITE/p" |
| # git://git.openstack.org/ |
| # https://review.openstack.org/p |
| fi |
| |
| if [ -z "$ZUUL_REF" ] |
| then |
| echo "This job may only be triggered by Zuul." |
| exit 1 |
| fi |
| |
| if [ ! -z "$ZUUL_CHANGE" ] |
| then |
| echo "Triggered by: $GERRIT_SITE/$ZUUL_CHANGE" |
| fi |
| |
| set -x |
| if [[ ! -e .git ]] |
| then |
| ls -a |
| rm -fr .[^.]* * |
| if [ -d /opt/git/$ZUUL_PROJECT/.git ] |
| then |
| git clone file:///opt/git/$ZUUL_PROJECT . |
| else |
| git clone $GIT_ORIGIN/$ZUUL_PROJECT . |
| fi |
| fi |
| git checkout master |
| git pull |
| git remote set-url origin $GIT_ORIGIN/$ZUUL_PROJECT |
| |
| # attempt to work around bugs 925790 and 1229352 |
| if ! git remote update |
| then |
| echo "The remote update failed, so garbage collecting before trying again." |
| git gc |
| git remote update |
| fi |
| |
| git reset --hard |
| if ! git clean -x -f -d -q ; then |
| sleep 1 |
| git clean -x -f -d -q |
| fi |
| |
| if [ -z "$ZUUL_NEWREV" ] |
| then |
| git fetch $ZUUL_SITE/p/$ZUUL_PROJECT $ZUUL_REF |
| git checkout FETCH_HEAD |
| git reset --hard FETCH_HEAD |
| if ! git clean -x -f -d -q ; then |
| sleep 1 |
| git clean -x -f -d -q |
| fi |
| else |
| git checkout $ZUUL_NEWREV |
| git reset --hard $ZUUL_NEWREV |
| if ! git clean -x -f -d -q ; then |
| sleep 1 |
| git clean -x -f -d -q |
| fi |
| fi |
| git branch -D working || true |
| git checkout -b working |
| |
| if [ -f .gitmodules ] |
| then |
| git submodule init |
| git submodule sync |
| git submodule update --init |
| fi |