system-config/modules/jenkins/files/slave_scripts/gerrit-git-prep.sh
James E. Blair 3ed03bbecb Clone from gerrit, fetch zuul refs from zuul.
Zuul may not always have the commits needed for some jobs,
and its branches may be in an unpredictable state, so only use
zuul to fetch zuul refs.

Re-set the origin to gerrit for any existing repos.

Change-Id: Ia300922d2e1585dd8d73a2711a7a25f4f9edd0e1
Reviewed-on: https://review.openstack.org/18492
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
2012-12-20 20:52:16 +00:00

50 lines
1008 B
Bash
Executable File

#!/bin/bash -e
GERRIT_SITE=$1
ZUUL_SITE=$2
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 "$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
git clone $GERRIT_SITE/p/$ZUUL_PROJECT .
fi
git remote set-url origin $GERRIT_SITE/p/$ZUUL_PROJECT
git remote update || git remote update # attempt to work around bug #925790
git reset --hard
git clean -x -f -d -q
if [ -z "$ZUUL_NEWREV" ]
then
git fetch $ZUUL_SITE/p/$ZUUL_PROJECT $ZUUL_REF
git checkout FETCH_HEAD
git reset --hard FETCH_HEAD
git clean -x -f -d -q
else
git checkout $ZUUL_NEWREV
git reset --hard $ZUUL_NEWREV
git clean -x -f -d -q
fi