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