#!/bin/bash set -o errexit set -o nounset set -o pipefail cd $WORKSPACE # Make sure the Nordix is set from Jenkins Job configuration # parameter: NORDIX_REMOTE and not from previous job execution if git remote | grep nordix > /dev/null ; then git remote rm nordix fi # When the GERRIT_BRANCH is not set the rebase job wasn't triggered by merge # but it's executed as part of timer. In this case we will make sure that all # branches from remote are synced with Nordix Gerrit. if [[ -z "${GERRIT_BRANCH:-}" ]] ; then echo "-- Fetch all ${PROJECT} branches from Gerrit upstream --" REMOTE_BRANCHES=$(git branch -r | grep -v 'HEAD -> ' | awk '/origin/ {gsub("origin/","");print}') for branch in ${REMOTE_BRANCHES} ; do git branch -f --track ${branch} origin/${branch} done # The job was triggered by merge on upstream Gerrit. We will make sure that branch set # in GERRIT_BRANCH is in sync with Nordix Gerrit. else echo "-- Fetch branch: ${GERRIT_BRANCH} for project: ${PROJECT} --" REMOTE_BRANCHES=${GERRIT_BRANCH} git branch -f --track ${GERRIT_BRANCH} origin/${GERRIT_BRANCH} fi git fetch origin --tags -v echo "-- Adding new remote $NORDIX_REMOTE for sync --" git remote add nordix $NORDIX_REMOTE git remote -v echo "-- Merging changes from Gerrit upstream remote branches to local branch: --" for branch in ${REMOTE_BRANCHES} ; do echo "--- Branch name: ${branch}" git checkout ${branch} -q -f git merge origin/${branch} --ff-only --stat echo "------ Pushing changes from branch: ${branch} to Nordix Gerrit" git push nordix -v echo "------ Pushing new tags from branch: ${branch} to Nordix Gerrit" git push nordix --tags -f -v done echo "--------------------------------------------------------------------"