#!/bin/sh force= while case "$#" in 0) break;; esac do case "$1" in -f | --force) force=force ;; -*) echo >&2 "$0: unknown option '$1'" exit 1 ;; *) break ;; esac shift done case "$#" in 0) : happy ;; *) echo >&2 "$0: extra arguments" ;; esac above_master=$(git rev-list --first-parent master.. | wc -l) above_next=$(git rev-list --first-parent next.. | wc -l) if test "$above_master" != "$above_next" then if test "$force" = force then echo >&2 warning: some patches are already in next else echo >&2 fatal: some patches are already in next exit 1 fi fi MID= OLD=$(git rev-parse HEAD) git detach || exit git rev-list HEAD..$OLD | while read commit do git notes --ref=amlog show $commit done | sed -n -e '/^Message-Id: /{ s///p q }' | xargs -n1 b4 am -o- -T | tee ./+b4am.mbx | git am -s3 && rm -f ./+b4am.mbx && git range-diff --notes=amlog --crea=999 @{-1}...