bin/promote
#!/usr/bin/env bash
if ! git diff-index --quiet HEAD -- ; then
echo "Cannot promote with a dirty working tree."
exit 1
fi
REMOTE=${2:-upstream}
SOURCE=$(git symbolic-ref --short HEAD 2>/dev/null || git rev-parse HEAD)
DEST=$1
if [ -z "${DEST}" ]; then
echo "Usage: $0 dest-branch [dest-remote]"
exit 1
fi
echo "Promoting ${SOURCE} to ${DEST}..."
set -e
set -x
git checkout "${DEST}" || git checkout -b "${DEST}"
git merge --no-ff --no-edit "${SOURCE}"
git push "${REMOTE}" "${DEST}"
git checkout -