Created
December 6, 2013 22:12
-
-
Save deckerego/7833027 to your computer and use it in GitHub Desktop.
Mass-merge one branch in a Git repository with another branch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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