#!/bin/bash #set -x # Use this variable to indicate a list of branches that docker hub is watching branches_list=('openj9' 'openj9-nightly' 'adopt11') function TrapExit { echo "Checking out back in master" git checkout master } batchMode=false while getopts "b" arg do case $arg in b) batchMode=true ;; *) echo "Unsupported arg $arg" exit 2 ;; esac done ${batchMode} && echo "Using batch mode" trap TrapExit EXIT SIGTERM test -d ./.git || { echo ".git folder was not found. Please start this script from root directory of the project!"; exit 1; } # Making sure we are in master git checkout master git pull --all || { echo "Can't pull the repo!"; \ exit 1; } git_branches=$(git branch -a) for branch in "${branches_list[@]}"; do if [[ "$git_branches" != *"$branch"* ]]; then echo "Can't update $branch because I can't find it in the list of branches." exit 1 else echo "Branch $branch found. Working with it." git checkout "$branch" || { echo "Can't checkout into the branch. Don't know the cause."; \ exit 1; } proceed='False' while [[ "$proceed" == "False" ]]; do if git merge -m 'Auto-merging via docker-versions-create' master; then proceed="True" echo "Branch $branch updated to current master successfully" # pushing changes to remote for this branch git commit -m "Auto merge branch with master" -a # push may fail if remote doesn't have this branch yet. In this case - sending branch git push || git push -u origin "$branch" || { echo "Can't push changes to the origin."; exit 1; } elif ${batchMode}; then status=$? echo "Git merge failed in batch mode" exit ${status} # and trap exit gets us back to master else cat<