diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2015-05-29 18:31:08 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2015-05-29 18:31:08 +0200 |
commit | 75cb85e0cfa66480492b80ada19bd5a02ea12305 (patch) | |
tree | 78b4761ae9421cb012bc2b92b600ed1830c0be5e /merge.sh |
Add git helper scripts
Diffstat (limited to 'merge.sh')
-rwxr-xr-x | merge.sh | 40 |
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 |