#!/usr/bin/env bash set -e usage() { local error="$1" cat >&2 <<EOF Usage: $0 BRANCH PULL_REQUEST Synopsis: Useful script for merging a GitHub pull request with a custom merge commit message. Strips "origin" from branch names in title. Example: $0 origin/philip/jael-fix 1953 Yields: Merge branch 'philip/jael-fix' (#1953) * origin/philip/jael-fix: jael: process all ships in %full update Signed-off-by: Jared Tobin <jared@tlon.io> Error: -> $error EOF exit 1 } args="$@" if [[ -z "$args" ]]; then usage "No arguments specified." fi REV=$1 PR=$2 if [[ -z "$PR" ]]; then usage "PULL_REQUEST not specified" fi KERNEL_CHANGED=`git diff --name-status $REV -- pkg/arvo/sys` PILLS_CHANGED=`git diff --name-status $REV -- bin` echo "Pre-merge checklist:" echo echo "Arvo:" echo "* Is this contribution OTA-updateable on top of the latest release?" echo "* Does this contribution include updated pills, if applicable?" echo echo "General:" echo "* Does this contribution contain tests for sanity checks, regressions, etc.?" echo "* Are commit prefixes present and accurate?" echo "* Have all WIP/FIXME/DONTCOMMIT commits been squashed?" echo "* Do commits contain long-form descriptions, if applicable?" echo if [[ ! -z $KERNEL_CHANGED && -z $PILLS_CHANGED ]] then echo "**WARNING**: kernel has changed, but pills have not" echo $KERNEL_CHANGED echo fi TARGET_MSG=$(echo $REV | sed s_origin/__) MERGE_MSG="Merge branch '$TARGET_MSG' (#$PR)" read -p "Proceed with merge? (y/n)" -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]] then git merge --no-ff --signoff --log -m "$MERGE_MSG" $REV fi