mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-23 20:03:31 +01:00
82a5297d99
Signed-off-by: David Goulet <dgoulet@torproject.org>
155 lines
4.1 KiB
Bash
Executable File
155 lines
4.1 KiB
Bash
Executable File
#!/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
|