64 lines
1.5 KiB
Bash
Executable File
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
|