123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- #!/usr/bin/env bash
- # Script to be used by other git scripts, and provide a single place
- # that lists our supported branches. To change which branches are
- # supported, look at the end of the file that says 'edit here'.
- SCRIPT_NAME=$(basename "$0")
- function usage()
- {
- echo "$SCRIPT_NAME [-h] [-l|-s|-b|-m] [-R|-M]"
- echo
- echo " arguments:"
- echo " -h: show this help text"
- echo
- echo " -l: list the active tor branches (default)"
- echo " -s: list the suffixes to be used with the active tor branches"
- echo " -b: write bash code setting WORKTREE to an array of ( branch path ) arrays"
- echo " -m: write bash code setting WORKTREE to an array of"
- echo " ( branch parent path suffix parent_suffix ) arrays"
- echo
- echo " -R: omit release branches."
- echo " -M: omit maint branches."
- }
- # list : just a list of branch names.
- # branch_path : For git-setup-dirs.sh and git-pull-all.sh
- # suffix: write a list of suffixes.
- # merge: branch, upstream, path, suffix, upstream suffix.
- mode="list"
- skip_maint_branches="no"
- skip_release_branches="no"
- while getopts "hblmsRM" opt ; do
- case "$opt" in
- h) usage
- exit 0
- ;;
- b) mode="branch_path"
- ;;
- l) mode="list"
- ;;
- s) mode="suffix"
- ;;
- m) mode="merge"
- ;;
- M) skip_maint_branches="yes"
- ;;
- R) skip_release_branches="yes"
- ;;
- *) echo "Unknown option"
- exit 1
- ;;
- esac
- done
- all_branch_vars=()
- prev_maint_branch=""
- prev_maint_suffix=""
- branch() {
- # The name of the branch. (Supplied by caller) Ex: maint-0.4.3
- brname="$1"
- # The name of the branch with no dots. Ex: maint-043
- brname_nodots="${brname//./}"
- # The name of the branch with no dots, and _ instead of -. Ex: maint_043
- brname_nodots_uscore="${brname_nodots//-/_}"
- # Name to use for a variable to represent the branch. Ex: MAINT_043
- varname="${brname_nodots_uscore^^}"
- is_maint="no"
- # suffix: a suffix to place at the end of branches we generate with respect
- # to this branch. Ex: _043
- # location: where the branch can be found.
- if [[ "$brname" == "main" ]]; then
- suffix="_main"
- location="\$GIT_PATH/\$TOR_MASTER_NAME"
- elif [[ "$brname" =~ ^maint- ]]; then
- suffix="_${brname_nodots#maint-}"
- location="\$GIT_PATH/\$TOR_WKT_NAME/$brname"
- is_maint="yes"
- if [[ "$skip_maint_branches" = "yes" ]]; then
- return
- fi
- elif [[ "$brname" =~ ^release- ]]; then
- suffix="_r${brname_nodots#release-}"
- location="\$GIT_PATH/\$TOR_WKT_NAME/$brname"
- if [[ "$skip_release_branches" = "yes" ]]; then
- return
- fi
- else
- echo "Unrecognized branch type '${brname}'" >&2
- exit 1
- fi
- all_branch_vars+=("$varname")
- # Now emit the per-branch information
- if [[ "$mode" == "branch_path" ]]; then
- echo "${varname}=( \"$brname\" \"$location\" )"
- elif [[ "$mode" == "merge" ]]; then
- echo "${varname}=( \"$brname\" \"$prev_maint_branch\" \"$location\" \"$suffix\" \"$prev_maint_suffix\" )"
- elif [[ "$mode" == "list" ]]; then
- echo "$brname"
- elif [[ "$mode" == "suffix" ]]; then
- echo "$suffix"
- else
- echo "unknown mode $mode" >&2
- exit 1
- fi
- if [[ "$is_maint" == "yes" ]]; then
- prev_maint_branch="$brname"
- prev_maint_suffix="$suffix"
- fi
- }
- finish() {
- if [[ "$mode" == branch_path ]] || [[ "$mode" == merge ]]; then
- echo "WORKTREE=("
- for v in "${all_branch_vars[@]}"; do
- echo " ${v}[@]"
- done
- echo ")"
- elif [[ "$mode" == list ]] || [[ "$mode" == suffix ]]; then
- # nothing to do
- :
- else
- echo "unknown mode $mode" >&2
- exit 1
- fi
- }
- # ==============================
- # EDIT HERE
- # ==============================
- # List of all branches. These must be in order, from oldest to newest, with
- # maint before release.
- branch maint-0.4.7
- branch release-0.4.7
- branch maint-0.4.8
- branch release-0.4.8
- branch main
- finish
|