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