Revised by
Ben Buchanan
f2af1c6
| #!/bin/bash
ORIGIN=$(git remote | grep -i origin)
if [[ ! $ORIGIN ]];then
echo "Remote named 'origin' is required."
exit
fi
# if there's a remote called "upstream" presume we're on a fork
ONFORK=$(git remote | grep -i upstream)
# get branch name
# BRANCH=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
BRANCH=$(git rev-parse --abbrev-ref HEAD)
spacer() {
echo "------------------------------------------------------------------------------------------"
}
echoAndRun() {
echo "$1"
$1
spacer
}
prune() {
# prune guards against dangling blobs
echoAndRun "git prune"
}
checkoutMaster() {
echoAndRun "git checkout master"
}
checkoutLastBranch() {
echoAndRun "git checkout -"
}
pullUpstreamMaster() {
echoAndRun "git pull upstream master"
}
pushOriginMaster() {
echoAndRun "git push origin master"
}
spacer
if [ "$ONFORK" ]
then
echo "Upstream remote detected. Will update fork and push to origin master."
spacer
if [ "$BRANCH" == "master" ]; then
pullUpstreamMaster
prune
pushOriginMaster
else
checkoutMaster
pullUpstreamMaster
prune
pushOriginMaster
checkoutLastBranch
read -r -p "Merge from master? [y/N] " response
if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]
then
echoAndRun "git merge master"
fi
fi;
else
echoAndRun "git pull"
prune
fi
|