xref: /aosp_15_r20/external/executorch/scripts/release/cut-release-branch.sh (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
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