pytorch/scripts/release/cut-release-branch.sh
Eli Uriegas ddb34e7b6a release: Add convenience script for branch cutting
Adds a convenience script to do branch cut to simplify the amount of
commands run in order to do the physical action of cutting the branch.

Also updates documentation related to branch cutting

Signed-off-by: Eli Uriegas <eliuriegas@fb.com>

Pull Request resolved: https://github.com/pytorch/pytorch/pull/72219
Approved by: https://github.com/malfet, https://github.com/atalman
2022-03-15 22:23:53 +00:00

50 lines
1.3 KiB
Bash

#!/usr/bin/env bash
: '
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/pytorch` usage would be like:
> DRY_RUN=disabled cut-release-branch.sh
For `pytorch/builder` or domains usage would be like:
> DRY_RUN=disabled GIT_BRANCH_TO_CUT_FROM=main RELEASE_VERSION=1.11 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 "${GIT_REMOTE}" "${branch}"
)
fi
done