| #!/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 "--------------------------------------------------------------------" |