46 lines
1.1 KiB
Bash
Executable File
46 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -u -e -o pipefail
|
|
|
|
BASEDIR=$(dirname "$0")
|
|
|
|
if [ $# -eq 0 ]; then
|
|
echo "Rebase github PR onto a branch"
|
|
echo
|
|
echo "$0 branch_to_rebase_on PR_NUMBER"
|
|
echo
|
|
exit 0
|
|
fi
|
|
|
|
REBASE_ON="$1"
|
|
PR_NO="$2"
|
|
|
|
|
|
HEAD_LABEL=`curl -s https://api.github.com/repos/angular/angular/pulls/$PR_NO | node $BASEDIR/utils/json_extract.js head.label`
|
|
echo $HEAD_LABEL
|
|
IFS=':' read -r -a array <<< "$HEAD_LABEL"
|
|
USER="${array[0]}"
|
|
USER_GIT_URL="git@github.com:$USER/angular.git"
|
|
BRANCH="${array[1]}"
|
|
OLD_BRANCH=`git branch | grep \* | cut -d ' ' -f2`
|
|
|
|
echo =====================================================
|
|
echo Rebasing $USER_GIT_URL branch $BRANCH onto $REBASE_ON
|
|
echo =====================================================
|
|
|
|
git fetch $USER_GIT_URL $BRANCH
|
|
git checkout FETCH_HEAD
|
|
PUSH_CMD="git push $USER_GIT_URL HEAD:$BRANCH -f";
|
|
RESTORE_CMD="git checkout $OLD_BRANCH"
|
|
git rebase upstream/master
|
|
if [ $? -eq 0 ]; then
|
|
$PUSH_CMD
|
|
$RESTORE_CMD
|
|
else
|
|
echo ===========================
|
|
echo Git rebase failed. RECOVER WITH:
|
|
echo " $PUSH_CMD"
|
|
echo " $RESTORE_CMD"
|
|
echo ===========================
|
|
fi
|