--- /dev/null
+#! /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