#! /bin/sh set -ex if [ "$1" = "-f" ];then force=true shift elif [ -n "$(/bin/ls *.patch 2>/dev/null|tee /proc/self/fd/2)" ];then echo >&2 "Some *.patch files exist!" exit 1 else force=false fi if [ $# != 1 ] || ! echo "$1" | grep -q '-';then echo >&2 "Syntax: $0 branch-list-delimited-by-dashes" exit 1 fi base="master" for elem in $(echo "$1"|tr '-' ' ');do if [ "$base" = "master" ];then next="$elem" else next="$base-$elem" fi git checkout "$next" git merge "$base" if $force;then echo -e '/^--- /,$d\nw'|ed "$next".patch else rm -f "$next".patch fi git diff "$base" "$next"|diffdecvs >>"$next".patch base="$next" done git checkout master echo OK