mirror of
https://github.com/urbit/shrub.git
synced 2024-11-23 20:26:54 +03:00
6acb751560
* Use 'set -e' to bail on any errors. * If the pull request number is not specified, bail out. * Print a simple pre-merge checklist before prompting for merge.
83 lines
1.6 KiB
Bash
Executable File
83 lines
1.6 KiB
Bash
Executable File
#!/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
|
|
|