Skip to content

Instantly share code, notes, and snippets.

@deckerego
Created December 6, 2013 22:12
Show Gist options
  • Save deckerego/7833027 to your computer and use it in GitHub Desktop.
Save deckerego/7833027 to your computer and use it in GitHub Desktop.
Mass-merge one branch in a Git repository with another branch
#!/bin/sh
DEFAULT_PROJECTS="Project_1 Project_2 Project_3"
SOURCE_BRANCH="$1"
DEST_BRANCH="$2"
PROJECTS="$3"
if [[ -z $SOURCE_BRANCH || -z $DEST_BRANCH ]]; then
echo "Usage: $0 SOURCE_BRANCH DESTINATION_BRANCH"
exit -1
fi
if [[ -z $PROJECTS ]]; then
echo "No project specified, merging all projects"
PROJECTS="$DEFAULT_PROJECTS"
fi
CURRENT_DIR=$PWD
checkout()
{
git checkout "$1"
git pull --rebase
if [[ $? -ne 0 ]]; then
echo "** CHECKOUT FAILED - FIX ABOVE ERRORS **"
exit $?
fi
}
merge()
{
git merge "$1"
if [[ $? -ne 0 ]]; then
echo "** MERGE FAILED - FIX ABOVE ERRORS **"
exit $?
fi
}
push()
{
git push origin "$1"
if [[ $? -ne 0 ]]; then
echo "** PUSH FAILED - FIX ABOVE ERRORS **"
exit $?
fi
}
for PROJECT in $PROJECTS
do
echo "Merging $PROJECT release $SOURCE_BRANCH into $DEST_BRANCH"
CURRENT_DIR=$PWD
cd $PROJECT
checkout "$SOURCE_BRANCH"
checkout "master"
merge "$SOURCE_BRANCH"
push "master"
checkout "$DEST_BRANCH"
merge "master"
push "$DEST_BRANCH"
cd $CURRENT_DIR
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment