Files
openzeppelin-contracts/scripts/upgradeable/merge-upstream.sh
2022-01-13 23:13:57 +00:00

32 lines
937 B
Bash

#!/usr/bin/env bash
set -euo pipefail
: "${REF:="$(git rev-parse --symbolic-full-name HEAD)"}"
if [[ "$REF" != refs/heads/* ]]; then
echo "$REF is not a branch" >&2
exit 1
elif [[ "$REF" == refs/heads/patches ]]; then
REF=refs/heads/master
fi
set -x
input="${REF#refs/heads/}"
upstream="${input#patched/}"
branch="patched/$upstream"
git checkout "$branch" 2>/dev/null || git checkout -b "$branch" origin/patches --no-track
git fetch 'https://github.com/OpenZeppelin/openzeppelin-contracts.git' master
merge_base="$(git merge-base origin/patches FETCH_HEAD)"
git fetch 'https://github.com/OpenZeppelin/openzeppelin-contracts.git' "$upstream"
# Check that patches is not ahead of the upstream branch we're merging.
if ! git merge-base --is-ancestor "$merge_base" FETCH_HEAD; then
echo "The patches branch is ahead of $upstream" >&2
exit 1
fi
git merge origin/patches FETCH_HEAD -m "Merge upstream $upstream into $branch"