#! /bin/sh
set -ex
-if [ $# != 1 ] || ! echo "$1" | grep -q '-';then
+compile=false
+if [ "$1" = -c ];then
+ compile=true
+ shift
+fi
+if [ $# != 1 ];then
echo >&2 "Syntax: $0 branch-list-delimited-by-dashes"
exit 1
fi
-base="origin/master"
+if [ -f origin ];then
+ origin="`cat origin`"
+else
+ origin="origin/master"
+fi
+base=$origin
gerrit=true
if git branch -D gerrit;then
- git checkout origin/master
+ git checkout $origin
git checkout -b gerrit
else
gerrit=false
fi
for elem in $(echo "$1"|tr '-' ' ');do
- if [ "$base" = "origin/master" ];then
+ if [ "$base" = $origin ];then
next="$elem"
else
next="$base-$elem"
fi
git checkout "$next"
- git merge "$base"
- if [ -e "$next".patch ];then
- echo -e '/^--- /,$d\nw'|ed "$next".patch || :
+ git merge --no-edit "$base"
+ if $compile;then
+ make
+ fi
+ if [ "$origin" != "master" ];then
+ if [ -e "$next".patch ];then
+ echo -e '/^--- /,$d\nw'|ed "$next".patch || :
+ fi
+ git diff "$base" "$next" --|diffdecvs >>"$next".patch
+ git diff -U9999999 --binary "$base" "$next" -- >"$next".Upatch
fi
- git diff "$base" "$next"|diffdecvs >>"$next".patch
if $gerrit;then
cp "$next".patch dashtopatch.patch
echo -e '/^--- /,$d\nw'|ed dashtopatch.patch