2019-11-16 14:46:52 +00:00
|
|
|
#!/bin/bash
|
|
|
|
#set -x
|
|
|
|
# Use this variable to indicate a list of branches that docker hub is watching
|
2019-11-16 15:30:39 +00:00
|
|
|
branches_list=('openj9' 'openj9-nightly' 'adopt11')
|
2019-11-16 14:46:52 +00:00
|
|
|
|
2020-03-06 15:52:17 +00:00
|
|
|
. /start-utils
|
|
|
|
|
2019-11-16 14:46:52 +00:00
|
|
|
function TrapExit {
|
2020-03-06 15:52:17 +00:00
|
|
|
log "Checking out back in master"
|
2019-11-16 14:46:52 +00:00
|
|
|
git checkout master
|
|
|
|
}
|
|
|
|
|
2019-11-16 15:30:06 +00:00
|
|
|
batchMode=false
|
|
|
|
|
|
|
|
while getopts "b" arg
|
|
|
|
do
|
|
|
|
case $arg in
|
|
|
|
b)
|
|
|
|
batchMode=true
|
|
|
|
;;
|
|
|
|
*)
|
2020-03-06 15:52:17 +00:00
|
|
|
log "Unsupported arg $arg"
|
2019-11-16 15:30:06 +00:00
|
|
|
exit 2
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
2020-03-06 15:52:17 +00:00
|
|
|
${batchMode} && log "Using batch mode"
|
2019-11-16 15:30:06 +00:00
|
|
|
|
2019-11-16 14:46:52 +00:00
|
|
|
trap TrapExit EXIT SIGTERM
|
|
|
|
|
2020-03-06 15:52:17 +00:00
|
|
|
test -d ./.git || { log ".git folder was not found. Please start this script from root directory of the project!";
|
2019-11-16 14:46:52 +00:00
|
|
|
exit 1; }
|
|
|
|
|
|
|
|
# Making sure we are in master
|
|
|
|
git checkout master
|
2020-03-06 15:52:17 +00:00
|
|
|
git pull --all || { log "Can't pull the repo!"; \
|
2019-11-16 14:46:52 +00:00
|
|
|
exit 1; }
|
|
|
|
|
|
|
|
git_branches=$(git branch -a)
|
|
|
|
|
|
|
|
for branch in "${branches_list[@]}"; do
|
|
|
|
if [[ "$git_branches" != *"$branch"* ]]; then
|
2020-03-06 15:52:17 +00:00
|
|
|
log "Can't update $branch because I can't find it in the list of branches."
|
2019-11-16 14:46:52 +00:00
|
|
|
exit 1
|
|
|
|
else
|
2020-03-06 15:52:17 +00:00
|
|
|
log "Branch $branch found. Working with it."
|
|
|
|
git checkout "$branch" || { log "Can't checkout into the branch. Don't know the cause."; \
|
2019-11-16 14:46:52 +00:00
|
|
|
exit 1; }
|
|
|
|
proceed='False'
|
|
|
|
while [[ "$proceed" == "False" ]]; do
|
2020-02-01 14:52:00 +00:00
|
|
|
# Ensure local branch is aligned with remote since docker-versions-create may have been run elsewhere
|
|
|
|
git pull
|
|
|
|
|
2019-11-16 15:04:03 +00:00
|
|
|
if git merge -m 'Auto-merging via docker-versions-create' master; then
|
2019-11-16 14:46:52 +00:00
|
|
|
proceed="True"
|
2020-03-06 15:52:17 +00:00
|
|
|
log "Branch $branch updated to current master successfully"
|
2019-11-16 14:46:52 +00:00
|
|
|
# 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
|
2020-03-06 15:52:17 +00:00
|
|
|
git push || git push -u origin "$branch" || { log "Can't push changes to the origin."; exit 1; }
|
2019-11-16 15:30:06 +00:00
|
|
|
elif ${batchMode}; then
|
|
|
|
status=$?
|
2020-03-06 15:52:17 +00:00
|
|
|
log "Git merge failed in batch mode"
|
2019-11-16 15:30:06 +00:00
|
|
|
exit ${status}
|
|
|
|
# and trap exit gets us back to master
|
2019-11-16 14:46:52 +00:00
|
|
|
else
|
|
|
|
cat<<EOL
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
Master merge in the branch $branch encountered an error!
|
|
|
|
You may try to fix the error and merge again. (Commit changes)
|
|
|
|
Or skip this branch merge completely.
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
EOL
|
|
|
|
printf "Should we try again? (y):"
|
2019-11-16 15:29:48 +00:00
|
|
|
read -r answer
|
2019-11-16 14:46:52 +00:00
|
|
|
if [[ "$answer" == '' ]] || [[ "$answer" == 'y' ]] || [[ "$answer" == 'Y' ]]; then
|
|
|
|
# If you use non-local editor or files are changed in repo
|
|
|
|
cat <<EOL
|
|
|
|
|
|
|
|
The following commands may encounter an error!
|
|
|
|
This is completely fine if the changes were made locally and remote branch doesn't know about them.
|
|
|
|
|
|
|
|
EOL
|
|
|
|
# Updating branch from remote before trying again
|
|
|
|
git checkout master
|
|
|
|
git fetch --all
|
|
|
|
git pull -a
|
|
|
|
git checkout "$branch"
|
|
|
|
continue
|
|
|
|
else
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
done
|