status-mobile/scripts/merge-pr.sh

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]"