#!/bin/bash # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Usage: ./scripts/pr_push_command.sh # # When run from a PR branch checked out by checkout_pr.sh, provides a command # that can push local PR branch to its corresponding remote. # NOTE: Always double check correctness of command, before pushing. # set -eou pipefail CURR_BRANCH=$(git status | grep "On branch" | awk '{print $NF}') REMOTE="apache" # Get PR number from branch if [[ ${CURR_BRANCH} = pull/* ]] then PR_NUM=$(echo "${CURR_BRANCH}" | awk -F'/' '{print $NF}') else echo "Not on a PR branch?" exit 1 fi # Parse the pr's remote, branch & add a remote if needed. PR_RESP=$(curl https://api.github.com/repos/${REMOTE}/hudi/pulls/${PR_NUM}) if ! echo ${PR_RESP} | jq '.url' | grep "hudi/pulls/${PR_NUM}" ; then echo "Unable to find PR number ${PR_NUM} in remote ${REMOTE}" exit 1 fi PR_SSH_URL=$(echo ${PR_RESP} | jq -r '.head.repo.ssh_url') PR_REMOTE_BRANCH=$(echo ${PR_RESP} | jq -r '.head.ref') PR_REMOTE=$(echo ${PR_RESP} | jq -r '.head.repo.owner.login') # Add a new remote, if needed. if ! git remote -v | grep ${PR_REMOTE} ; then echo "Adding new remote ${PR_REMOTE} with ssh url ${PR_SSH_URL}" git remote add ${PR_REMOTE} ${PR_SSH_URL} fi # Push local branch to PR remote/branch echo "If you are sure, execute the following command to push" echo " git push ${PR_REMOTE} ${CURR_BRANCH}:${PR_REMOTE_BRANCH}"