65 lines
2.2 KiB
Bash
65 lines
2.2 KiB
Bash
#!/bin/bash -ex
|
|
|
|
[ -z "${REPO_PATH}" ] && REPO_PATH="." || REPO_PATH=${REPO_PATH}
|
|
|
|
# The logic below is needed to preserve the old behaviour of the template
|
|
# while providing more flexibility around the git namespace selection
|
|
if [ -z "${GIT_NAMESPACE_PREFIX}" ];
|
|
then
|
|
GIT_NAMESPACE_PREFIX="upstream/"
|
|
elif [ ${GIT_NAMESPACE_PREFIX} == '""' ];
|
|
then
|
|
GIT_NAMESPACE_PREFIX=""
|
|
else
|
|
GIT_NAMESPACE_PREFIX="${GIT_NAMESPACE_PREFIX}/"
|
|
fi
|
|
|
|
[ -z "${GERRIT_URL}" ] && { echo "Required var GERRIT_URL not set"; exit 2; }
|
|
|
|
cd ${REPO_PATH}
|
|
|
|
git remote prune origin
|
|
git fetch --tags
|
|
git remote set-head origin -d
|
|
|
|
if [[ -z "${UPSTREAM_REPO}" ]]
|
|
then
|
|
# if using git < 1.7.5 then will need to replace the url extraction with
|
|
# 'git config --get remote.origin.url', however this will ignore some of
|
|
# how git allows control of the url.
|
|
UPSTREAM_REPO="$(git ls-remote --get-url origin)"
|
|
UPSTREAM_REPO="${UPSTREAM_REPO##*:}"
|
|
UPSTREAM_REPO="${UPSTREAM_REPO##*/}"
|
|
fi
|
|
|
|
LOCAL_REPO=${LOCAL_REPO:-${UPSTREAM_REPO}}
|
|
[ -z "${LOCAL_TEAM}" ] && { echo "Required var LOCAL_TEAM not set"; exit 2; }
|
|
[ -z "${LOCAL_REPO}" ] && { echo "Required var LOCAL_REPO not set"; exit 2; }
|
|
|
|
DRY_RUN_FLAG=`[ "${DRY_RUN}" = "true" ] && echo -n "--dry-run"` || true
|
|
PUSH_URL="${GERRIT_URL}/${LOCAL_TEAM%% }/${LOCAL_REPO%% }.git"
|
|
|
|
FORCE_FLAG=
|
|
if [ "${FORCE_PUSH_ALL}" = "true" ]
|
|
then
|
|
FORCE_FLAG="+"
|
|
fi
|
|
|
|
SPECIFIC_REFS=""
|
|
|
|
OPENSTACK_META=`git ls-remote origin refs/meta/openstack/*` || true
|
|
if [ -n "${OPENSTACK_META}" ]
|
|
then
|
|
git fetch origin +refs/meta/openstack/*:refs/meta/openstack/*
|
|
SPECIFIC_REFS="${SPECIFIC_REFS}${SPECIFIC_REFS:+ }${FORCE_FLAG}refs/meta/openstack/*:refs/meta/openstack/*"
|
|
fi
|
|
|
|
OPENSTACK_MILESTONE_PROPOSED=`git show-ref --verify refs/heads/milestone-proposed 2>/dev/null` || true
|
|
if [ -n "${OPENSTACK_MILESTONE_PROPOSED}" ]
|
|
then
|
|
SPECIFIC_REFS="${SPECIFIC_REFS}${SPECIFIC_REFS:+ }+refs/remotes/origin/milestone-proposed:refs/heads/${GIT_NAMESPACE_PREFIX}milestone-proposed"
|
|
fi
|
|
|
|
git push $DRY_RUN_FLAG "$PUSH_URL" ${SPECIFIC_REFS} ${FORCE_FLAG}refs/remotes/origin/*:refs/heads/${GIT_NAMESPACE_PREFIX}*
|
|
git push $DRY_RUN_FLAG "$PUSH_URL" ${FORCE_FLAG}refs/tags/*:refs/tags/${GIT_NAMESPACE_PREFIX}*
|