cryptopp/TestScripts/master-merge.sh

64 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
if [[ (-z $(git rev-parse HEAD 2>/dev/null)) ]]; then
echo "$PWD is not a Git repository"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
current=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
git fetch --all &>/dev/null &>/dev/null
if [[ "$?" -ne "0" ]]; then
echo "git fetch --all failed"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
for branch in $(git branch -a | cut -b 2- | grep "remotes/origin" | cut -f 3 -d '/' | awk '{print $1}');
do
# Skip anything that looks like Master
if [[ ((-z "$branch") || ("$branch" = "master") || ("$branch" = "HEAD")) ]]; then
continue;
fi
# Skip anything that looks like a release, like CRYPTOPP_5_6_3
if [[ (! -z $(echo -n "$branch" | grep "CRYPTOPP_")) ]]; then
continue;
fi
echo "**************** $branch *******************"
git checkout -f "$branch" &>/dev/null
if [[ "$?" -ne "0" ]]; then
echo "git checkout $branch failed"
continue;
fi
git rebase "origin/$branch"
if [[ "$?" -ne "0" ]]; then
echo "git rebase $branch failed"
continue;
fi
git merge master -S -m "Merge branch 'master' into dev-branch '$branch'" &>/dev/null
if [[ "$?" -ne "0" ]]; then
echo "git merge $branch failed"
continue;
fi
git push &>/dev/null
if [[ "$?" -ne "0" ]]; then
echo "git push $branch failed"
continue;
fi
echo "Completed merging for '$branch'"
done
if [[ ! -z "$current" ]]; then
git checkout "$current" &>/dev/null
fi
echo "Back on branch $current"
[[ "$0" = "$BASH_SOURCE" ]] && exit 0 || return 0