+ if [ $? -ne 0 ]; then
+ FAILED=1
+ FAILED_CMDS="$FAILED_CMDS\n$COMMAND"
+ fi
+ popd > /dev/null
+}
+
+function run_ignore_errors () {
+ OLD_FAILED=$FAILED
+ OLD_FAILED_CMDS=$FAILED_CMDS
+ run "$1" "$2"
+ FAILED=$OLD_FAILED
+ FAILED_CMDS=$OLD_FAILED_CMDS
+}
+
+function merge_all_branches () {
+ NAME=$1
+ REMOTE=$2
+ REPO_DIR=$3
+
+ pushd $REPO_DIR > /dev/null
+ BRANCHES=$(git branch -r | grep $REMOTE | grep -v HEAD | sed "s/.*\///g" | grep -v master)
+ popd > /dev/null
+
+ run "git checkout master" ${REPO_DIR}
+ run "git merge --ff $REMOTE/master" ${REPO_DIR}
+ for BRANCH in $BRANCHES ; do
+ run_ignore_errors "git branch $BRANCH $REMOTE/$BRANCH" ${REPO_DIR}
+ run "git checkout $BRANCH" ${REPO_DIR}
+ run "git merge --ff $REMOTE/$BRANCH" ${REPO_DIR}
+ done
+}
+
+function push_all_branches () {
+ NAME=$1
+ REMOTE=$2
+ REPO_DIR=$3
+
+ pushd $REPO_DIR > /dev/null
+ BRANCHES=$(git branch -r | grep $REMOTE | grep -v HEAD | sed "s/.*\///g" | grep -v master)