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