#!/usr/bin/env bash # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. : ' So you are looking to cut a release branch? Well you came to the right script. This script can be used to cut any branch on any repository For `pytorch/executorch` usage would be like: > DRY_RUN=disabled ./scripts/release/cut-release-branch.sh or to cut from main branch: > DRY_RUN=disabled GIT_BRANCH_TO_CUT_FROM=main ./scripts/release/cut-release-branch.sh ' set -eou pipefail GIT_TOP_DIR=$(git rev-parse --show-toplevel) GIT_REMOTE=${GIT_REMOTE:-origin} GIT_BRANCH_TO_CUT_FROM=${GIT_BRANCH_TO_CUT_FROM:-viable/strict} # should output something like 1.11 RELEASE_VERSION=${RELEASE_VERSION:-$(cut -d'.' -f1-2 "${GIT_TOP_DIR}/version.txt")} DRY_RUN_FLAG="--dry-run" if [[ ${DRY_RUN:-enabled} == "disabled" ]]; then DRY_RUN_FLAG="" fi ( set -x git fetch --all git checkout "${GIT_REMOTE}/${GIT_BRANCH_TO_CUT_FROM}" ) for branch in "release/${RELEASE_VERSION}" "orig/release/${RELEASE_VERSION}"; do if git rev-parse --verify "${branch}" >/dev/null 2>/dev/null; then echo "+ Branch ${branch} already exists, skipping..." continue else ( set -x git checkout "${GIT_REMOTE}/${GIT_BRANCH_TO_CUT_FROM}" git checkout -b "${branch}" git push -q ${DRY_RUN_FLAG} "${GIT_REMOTE}" "${branch}" ) fi done