init
[nethome.git] / bin / dashtopatch
1 #! /bin/sh
2 set -ex
3 if [ "$1" = "-f" ];then
4   force=true
5   shift
6 elif [ -n "$(/bin/ls *.patch 2>/dev/null|tee /proc/self/fd/2)" ];then
7   echo >&2 "Some *.patch files exist!"
8   exit 1
9 else
10   force=false
11 fi
12 if [ $# != 1 ] || ! echo "$1" | grep -q '-';then
13   echo >&2 "Syntax: $0 branch-list-delimited-by-dashes"
14   exit 1
15 fi
16 base="master"
17 for elem in $(echo "$1"|tr '-' ' ');do
18   if [ "$base" = "master" ];then
19     next="$elem"
20   else
21     next="$base-$elem"
22   fi
23   git checkout "$next"
24   git merge "$base"
25   if $force;then
26     echo -e '/^--- /,$d\nw'|ed "$next".patch
27   else
28     rm -f "$next".patch
29   fi
30   git diff "$base" "$next"|diffdecvs >>"$next".patch
31   base="$next"
32 done
33 git checkout master
34 echo OK