1*da0073e9SAndroid Build Coastguard Worker#!/usr/bin/env bash 2*da0073e9SAndroid Build Coastguard Worker 3*da0073e9SAndroid Build Coastguard Worker: ' 4*da0073e9SAndroid Build Coastguard WorkerSo you are looking to cut a release branch? Well you came 5*da0073e9SAndroid Build Coastguard Workerto the right script. 6*da0073e9SAndroid Build Coastguard Worker 7*da0073e9SAndroid Build Coastguard WorkerThis script can be used to cut any branch on any repository 8*da0073e9SAndroid Build Coastguard Worker 9*da0073e9SAndroid Build Coastguard WorkerFor `pytorch/pytorch` usage would be like: 10*da0073e9SAndroid Build Coastguard Worker> DRY_RUN=disabled cut-release-branch.sh 11*da0073e9SAndroid Build Coastguard Worker 12*da0073e9SAndroid Build Coastguard WorkerFor `pytorch/builder` or domains usage would be like: 13*da0073e9SAndroid Build Coastguard Worker> DRY_RUN=disabled GIT_BRANCH_TO_CUT_FROM=main RELEASE_VERSION=1.11 cut-release-branch.sh 14*da0073e9SAndroid Build Coastguard Worker' 15*da0073e9SAndroid Build Coastguard Worker 16*da0073e9SAndroid Build Coastguard Workerset -eou pipefail 17*da0073e9SAndroid Build Coastguard Worker 18*da0073e9SAndroid Build Coastguard WorkerGIT_TOP_DIR=$(git rev-parse --show-toplevel) 19*da0073e9SAndroid Build Coastguard WorkerGIT_REMOTE=${GIT_REMOTE:-origin} 20*da0073e9SAndroid Build Coastguard WorkerGIT_BRANCH_TO_CUT_FROM=${GIT_BRANCH_TO_CUT_FROM:-viable/strict} 21*da0073e9SAndroid Build Coastguard Worker 22*da0073e9SAndroid Build Coastguard Worker# should output something like 1.11 23*da0073e9SAndroid Build Coastguard WorkerRELEASE_VERSION=${RELEASE_VERSION:-$(cut -d'.' -f1-2 "${GIT_TOP_DIR}/version.txt")} 24*da0073e9SAndroid Build Coastguard Worker 25*da0073e9SAndroid Build Coastguard WorkerDRY_RUN_FLAG="--dry-run" 26*da0073e9SAndroid Build Coastguard Workerif [[ ${DRY_RUN:-enabled} == "disabled" ]]; then 27*da0073e9SAndroid Build Coastguard Worker DRY_RUN_FLAG="" 28*da0073e9SAndroid Build Coastguard Workerfi 29*da0073e9SAndroid Build Coastguard Worker 30*da0073e9SAndroid Build Coastguard Worker 31*da0073e9SAndroid Build Coastguard Worker( 32*da0073e9SAndroid Build Coastguard Worker set -x 33*da0073e9SAndroid Build Coastguard Worker git fetch --all 34*da0073e9SAndroid Build Coastguard Worker git checkout "${GIT_REMOTE}/${GIT_BRANCH_TO_CUT_FROM}" 35*da0073e9SAndroid Build Coastguard Worker) 36*da0073e9SAndroid Build Coastguard Worker 37*da0073e9SAndroid Build Coastguard Workerfor branch in "release/${RELEASE_VERSION}" "orig/release/${RELEASE_VERSION}"; do 38*da0073e9SAndroid Build Coastguard Worker if git rev-parse --verify "${branch}" >/dev/null 2>/dev/null; then 39*da0073e9SAndroid Build Coastguard Worker echo "+ Branch ${branch} already exists, skipping..." 40*da0073e9SAndroid Build Coastguard Worker continue 41*da0073e9SAndroid Build Coastguard Worker else 42*da0073e9SAndroid Build Coastguard Worker ( 43*da0073e9SAndroid Build Coastguard Worker set -x 44*da0073e9SAndroid Build Coastguard Worker git checkout "${GIT_REMOTE}/${GIT_BRANCH_TO_CUT_FROM}" 45*da0073e9SAndroid Build Coastguard Worker git checkout -b "${branch}" 46*da0073e9SAndroid Build Coastguard Worker git push -q ${DRY_RUN_FLAG} "${GIT_REMOTE}" "${branch}" 47*da0073e9SAndroid Build Coastguard Worker ) 48*da0073e9SAndroid Build Coastguard Worker fi 49*da0073e9SAndroid Build Coastguard Workerdone 50