aboutsummaryrefslogtreecommitdiff
path: root/merge.sh
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-05-29 18:31:08 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-05-29 18:31:08 +0200
commit75cb85e0cfa66480492b80ada19bd5a02ea12305 (patch)
tree78b4761ae9421cb012bc2b92b600ed1830c0be5e /merge.sh
Add git helper scripts
Diffstat (limited to 'merge.sh')
-rwxr-xr-xmerge.sh40
1 files changed, 40 insertions, 0 deletions
diff --git a/merge.sh b/merge.sh
new file mode 100755
index 0000000..50ed00a
--- /dev/null
+++ b/merge.sh
@@ -0,0 +1,40 @@
+#! /bin/sh
+
+. etc/git/modules
+
+wd=`pwd`
+
+if [ "$1" = "" ]; then
+ echo "source branch name expected" 1>&2
+ exit 1
+fi
+
+for i in $modules; do
+ echo "merge $i" 1>&2
+ cd $i
+
+ br=`git symbolic-ref -q HEAD`
+ br=`echo $br | sed -e 's%^refs/heads/%%'`
+
+ # Only allow fast-forward merges into master.
+ #
+ if [ "$br" = "master" ]; then
+ git merge --ff-only $*
+ else
+ git merge $*
+ fi
+
+ if [ $? -ne 0 ]; then
+ echo 1>&2
+ echo "merge FAILED" 1>&2
+ echo 1>&2
+
+ # Merge failures (conflicts) into non-master branches are ok.
+ #
+ if [ "$br" = "master" ]; then
+ exit 1
+ fi
+ fi
+
+ cd $wd
+done