45 lines
984 B
Bash
Executable File
45 lines
984 B
Bash
Executable File
#!/bin/bash
|
|
|
|
set -eof pipefail
|
|
|
|
BRANCH=$1
|
|
if [[ $# -eq 0 ]] ; then
|
|
echo 'Branch required as first argument'
|
|
exit 0
|
|
fi
|
|
|
|
confirm() {
|
|
read -p "$1 (type 'yes' to continue) " r
|
|
if [[ $r != yes ]]; then
|
|
exit 3
|
|
fi
|
|
}
|
|
|
|
echo "[Merge PR from ${BRANCH}]"
|
|
|
|
echo "[Update remote and checkout branch]"
|
|
git remote update origin
|
|
git checkout -B $BRANCH origin/$BRANCH && git pull
|
|
|
|
echo "[Rebase and squash to one commit (manual)]"
|
|
git rebase -i origin/develop
|
|
if [[ $(git rev-list $BRANCH..$PR_LOCAL_BRACNCH | wc -l) -ne 1 ]] ;then
|
|
confirm "There are multiple commits in this PR. Are you sure you wish to continue without squashing?"
|
|
fi
|
|
|
|
echo "[Verify signature and commit (manual), update PR]"
|
|
git show --show-signature
|
|
git push -f
|
|
|
|
echo "[Checkout develop and merge with same SHA]"
|
|
git checkout develop && git pull
|
|
git merge --ff-only $BRANCH
|
|
|
|
echo "[Push to protected develop branch]"
|
|
git push
|
|
|
|
echo "[Clean up remote branch]"
|
|
git push origin --delete $BRANCH
|
|
|
|
echo "[Done]"
|