Add --exclude-projects option to branch management scripts

create_branches_and_tags typically branches all projects from a given
remote.  The docs team requests that docs project be branched
independently.

this update adds --exclude-projects as a new option to remove
a project(s) from the set of projects to be branched and/or tagged.

Closes-bug: 1983049
Signed-off-by: Scott Little <scott.little@windriver.com>
Change-Id: Ibaeb76a13b7963141f6852cb099386f615ea9d12
This commit is contained in:
Scott Little 2022-07-28 14:37:50 -04:00
parent 67e5611f19
commit 147078c57a
4 changed files with 96 additions and 15 deletions

View File

@ -1,7 +1,7 @@
#!/bin/bash
#
# Copyright (c) 2020-2021 Wind River Systems, Inc.
# Copyright (c) 2020-2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
@ -39,6 +39,11 @@ usage () {
echo " Create a branch and a tag in all listed projects, and all"
echo " projects hosted by all listed remotes. Lists are comma separated."
echo ""
echo " [ --exclude-projects=<projects> ]"
echo ""
echo " Do not branch the list of projects. Used in conjunction with"
echo " --remotes to branch everything from a remote minus a few projects."
echo ""
echo "gitreview options:"
echo " Update any .gitreview files in branched projects."
echo ""
@ -77,8 +82,9 @@ usage () {
echo ""
}
TEMP=$(getopt -o h --long remotes:,projects:,branch:,tag:,manifest,manifest-file:,lock-down,hard-lock-down,soft-lock-down,default-revision,gitreview-default,gitreview-project,gitreview-host:,gitreview-port:,safe-gerrit-host:,lock-down-exclude-remotes:,lock-down-exclude-projects:,help -n 'create_branches_and_tags.sh' -- "$@")
TEMP=$(getopt -o h --long remotes:,projects:,exclude-projects:,branch:,tag:,manifest,manifest-file:,lock-down,hard-lock-down,soft-lock-down,default-revision,gitreview-default,gitreview-project,gitreview-host:,gitreview-port:,safe-gerrit-host:,lock-down-exclude-remotes:,lock-down-exclude-projects:,help -n 'create_branches_and_tags.sh' -- "$@")
if [ $? -ne 0 ]; then
echo_stderr "ERROR: getopt failure"
usage
exit 1
fi
@ -95,6 +101,7 @@ GITREVIEW_CHANGE=0
SET_DEFAULT_REVISION=0
remotes=""
projects=""
exclude_projects=""
ld_exclude_remotes=""
ld_exclude_projects=""
branch=""
@ -109,6 +116,7 @@ while true ; do
-h|--help) HELP=1 ; shift ;;
--remotes) remotes+=$(echo "$2 " | tr ',' ' '); shift 2;;
--projects) projects+=$(echo "$2 " | tr ',' ' '); shift 2;;
--exclude-projects) exclude_projects+=$(echo "$2 " | tr ',' ' '); shift 2;;
--lock-down-exclude-remotes) ld_exclude_remotes+=$(echo "$2 " | tr ',' ' '); shift 2;;
--lock-down-exclude-projects) ld_exclude_projects+=$(echo "$2 " | tr ',' ' '); shift 2;;
--branch) branch=$2; shift 2;;
@ -287,7 +295,7 @@ if [ $MANIFEST -eq 1 ]; then
fi
fi
for project in $projects $ld_exclude_projects; do
for project in $projects $exclude_projects $ld_exclude_projects; do
if ! repo_is_project $project; then
echo_stderr "Invalid project: $project"
echo_stderr "Valid projects are: $(repo_project_list | tr '\n' ' ')"
@ -318,11 +326,25 @@ if [ "$projects" == "" ] && [ "$remotes" == "" ]; then
projects="$(repo_project_list)"
fi
if [ "$projects" != "" ] && [ "$exclude_projects" != "" ]; then
for project in $exclude_projects; do
projects=$(echo $projects | sed -e "s# $project # #" -e "s#^$project ##" -e "s# $project\$##" -e "s#^$project\$##")
done
fi
if [ "$projects" == "" ]; then
echo_stderr "No projects found"
exit 1
fi
echo "List of projects to be branched"
echo "==============================="
for project in $projects; do
echo $project
done
echo "==============================="
echo
# Provide a default tag name if not otherwise provided
if [ "$tag" == "" ]; then
tag="v$branch"

View File

@ -1,7 +1,7 @@
#!/bin/bash
#
# Copyright (c) 2020-2021 Wind River Systems, Inc.
# Copyright (c) 2020-2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
@ -34,6 +34,11 @@ usage () {
echo " Create a branch and a tag in all listed projects, and all"
echo " projects hosted by all listed remotes. Lists are comma separated."
echo ""
echo " [ --exclude-projects=<projects> ]"
echo ""
echo " Do not branch the list of projects. Used in conjunction with"
echo " --remotes to branch everything from a remote minus a few projects."
echo ""
echo "manifest options:"
echo " [ --manifest ]"
echo " Modify the current repo manifest to specify the"
@ -62,8 +67,9 @@ usage () {
echo ""
}
TEMP=$(getopt -o h --long remotes:,projects:,tag:,manifest,manifest-file:,manifest-prefix:,lock-down,hard-lock-down,soft-lock-down,default-revision,safe-gerrit-host:,lock-down-exclude-remotes:,lock-down-exclude-projects:,help -n 'create_tags.sh' -- "$@")
TEMP=$(getopt -o h --long remotes:,projects:,exclude-projects:,tag:,manifest,manifest-file:,manifest-prefix:,lock-down,hard-lock-down,soft-lock-down,default-revision,safe-gerrit-host:,lock-down-exclude-remotes:,lock-down-exclude-projects:,help -n 'create_tags.sh' -- "$@")
if [ $? -ne 0 ]; then
echo_stderr "ERROR: getopt failure"
usage
exit 1
fi
@ -75,6 +81,7 @@ LOCK_DOWN=0
SET_DEFAULT_REVISION=0
remotes=""
projects=""
exclude_projects=""
ld_exclude_remotes=""
ld_exclude_projects=""
tag=""
@ -89,6 +96,7 @@ while true ; do
-h|--help) HELP=1 ; shift ;;
--remotes) remotes+=$(echo "$2 " | tr ',' ' '); shift 2;;
--projects) projects+=$(echo "$2 " | tr ',' ' '); shift 2;;
--exclude-projects) exclude_projects+=$(echo "$2 " | tr ',' ' '); shift 2;;
--lock-down-exclude-remotes) ld_exclude_remotes+=$(echo "$2 " | tr ',' ' '); shift 2;;
--lock-down-exclude-projects) ld_exclude_projects+=$(echo "$2 " | tr ',' ' '); shift 2;;
--tag) tag=$2; shift 2;;
@ -101,9 +109,10 @@ while true ; do
--default-revision) SET_DEFAULT_REVISION=1 ; shift ;;
--safe-gerrit-host) safe_gerrit_hosts+=("$2") ; shift 2 ;;
--) shift ; break ;;
*) usage; exit 1 ;;
*) echo "unknown option $1"; usage; exit 1 ;;
esac
done
git_set_safe_gerrit_hosts "${safe_gerrit_hosts[@]}"
if [ $HELP -eq 1 ]; then
@ -142,7 +151,7 @@ if [ $MANIFEST -eq 1 ]; then
fi
fi
for project in $projects $ld_exclude_projects; do
for project in $projects $exclude_projects $ld_exclude_projects; do
if ! repo_is_project $project; then
echo_stderr "Invalid project: $project"
echo_stderr "Valid projects are: $(repo_project_list | tr '\n' ' ')"
@ -172,11 +181,24 @@ if [ "$projects" == "" ] && [ "$remotes" == "" ]; then
projects="$(repo_project_list)"
fi
if [ "$projects" != "" ] && [ "$exclude_projects" != "" ]; then
for project in $exclude_projects; do
projects=$(echo $projects | sed -e "s# $project # #" -e "s#^$project ##" -e "s# $project\$##" -e "s#^$project\$##")
done
fi
if [ "$projects" == "" ]; then
echo_stderr "No projects found"
exit 1
fi
echo "List of projects to be tagged"
echo "============================="
for project in $projects; do
echo $project
done
echo "============================="
echo
echo "Finding subgits"
SUBGITS=$(repo forall $projects -c 'echo '"$repo_root_dir"'/$REPO_PATH')

View File

@ -1,7 +1,7 @@
#!/bin/bash
#
# Copyright (c) 2020-2021 Wind River Systems, Inc.
# Copyright (c) 2020-2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
@ -22,12 +22,14 @@ source "${PUSH_BRANCHES_TAGS_SH_DIR}/../url_utils.sh"
usage () {
echo "push_branches_tags.sh --branch=<branch> [--tag=<tag>]"
echo " [ --remotes=<remotes> ] [ --projects=<projects> ]"
echo " [ --exclude-projects=<projects> ]"
echo " [ --manifest [ --manifest-file=<file.xml> ] ]"
echo " [ --bypass-gerrit] [--safe-gerrit-host=<host>]"
echo " [ --dry-run ]"
echo ""
echo "Push a pre-existing branch and tag into all listed projects, and all"
echo "projects hosted by all listed remotes. Lists are comma separated."
echo "projects hosted by all listed remotes, minus excluded projects."
echo "Lists are comma separated."
echo ""
echo "The branch name must be provided. The tag name can also be provided."
echo "If the tag is omitted, one is automativally generate by adding the"
@ -43,8 +45,9 @@ usage () {
echo "--dry-run will print out git push commands without executing them"
}
TEMP=$(getopt -o h,n --long remotes:,projects:,branch:,tag:,bypass-gerrit,manifest,manifest-file:,safe-gerrit-host:,help,dry-run -n 'push_branches_tags.sh' -- "$@")
TEMP=$(getopt -o h,n --long remotes:,projects:,exclude-projects:,branch:,tag:,bypass-gerrit,manifest,manifest-file:,safe-gerrit-host:,help,dry-run -n 'push_branches_tags.sh' -- "$@")
if [ $? -ne 0 ]; then
echo_stderr "ERROR: getopt failure"
usage
exit 1
fi
@ -56,6 +59,7 @@ BYPASS_GERRIT=0
DRY_RUN=
remotes=""
projects=""
excluded_projects=""
branch=""
tag=""
manifest=""
@ -69,6 +73,7 @@ while true ; do
--bypass-gerrit) BYPASS_GERRIT=1 ; shift ;;
--remotes) remotes+=$(echo "$2 " | tr ',' ' '); shift 2;;
--projects) projects+=$(echo "$2 " | tr ',' ' '); shift 2;;
--exclude-projects) excluded_projects+=$(echo "$2 " | tr ',' ' '); shift 2;;
--branch) branch=$2; shift 2;;
--tag) tag=$2; shift 2;;
--manifest) MANIFEST=1 ; shift ;;
@ -123,7 +128,7 @@ if [ $MANIFEST -eq 1 ]; then
\cp -f "${manifest}.save" "${manifest}"
fi
for project in $projects; do
for project in $projects $excluded_projects; do
if ! repo_is_project $project; then
echo_stderr "Invalid project: $project"
echo_stderr "Valid projects are: $(repo_project_list | tr '\n' ' ')"
@ -149,11 +154,25 @@ if [ "$projects" == "" ] && [ "$remotes" == "" ]; then
projects="$(repo_project_list)"
fi
if [ "$projects" != "" ] && [ "$exclude_projects" != "" ]; then
for project in $exclude_projects; do
projects=$(echo $projects | sed -e "s# $project # #" -e "s#^$project ##" -e "s# $project\$##" -e "s#^$project\$##")
done
fi
if [ "$projects" == "" ]; then
echo_stderr "No projects found"
exit 1
fi
echo "List of projects to be pushed"
echo "============================="
for project in $projects; do
echo $project
done
echo "============================="
echo
# Provide a default tag name if not otherwise provided
if [ "$tag" == "" ]; then
tag="v$branch"

View File

@ -1,7 +1,7 @@
#!/bin/bash
#
# Copyright (c) 2020-2021 Wind River Systems, Inc.
# Copyright (c) 2020-2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
@ -20,12 +20,14 @@ source "${PUSH_TAGS_SH_DIR}/../git-repo-utils.sh"
usage () {
echo "push_tags.sh --tag=<tag> [ --remotes=<remotes> ] [ --projects=<projects> ]"
echo " [ --exclude-projects=<projects> ]"
echo " [ --manifest [ --manifest-file=<manifest.xml> ] [--manifest-prefix <prefix>]]"
echo " [ --bypass-gerrit ] [--safe-gerrit-host=<host>]"
echo " [ --dry-run ]"
echo " "
echo "Push a pre-existing git tag into all listed projects, and all projects"
echo "hosted by all listed remotes. Lists are comma separated."
echo "hosted by all listed remotes, minus excluded projects."
echo "Lists are comma separated."
echo ""
echo "A manifest push can also be requested."
echo ""
@ -36,8 +38,9 @@ usage () {
}
TEMP=$(getopt -o h,n --long remotes:,projects:,tag:,manifest,manifest-file:,manifest-prefix:,bypass-gerrit,safe-gerrit-host:,help,dry-run -n 'push_tags.sh' -- "$@")
TEMP=$(getopt -o h,n --long remotes:,projects:,exclude-projects:,tag:,manifest,manifest-file:,manifest-prefix:,bypass-gerrit,safe-gerrit-host:,help,dry-run -n 'push_tags.sh' -- "$@")
if [ $? -ne 0 ]; then
echo_stderr "ERROR: getopt failure"
usage
exit 1
fi
@ -49,6 +52,7 @@ MANIFEST=0
BYPASS_GERRIT=0
remotes=""
projects=""
excluded_projects=""
tag=""
manifest=""
manifest_prefix=""
@ -63,6 +67,7 @@ while true ; do
--bypass-gerrit) BYPASS_GERRIT=1 ; shift ;;
--remotes) remotes+=$(echo "$2 " | tr ',' ' '); shift 2;;
--projects) projects+=$(echo "$2 " | tr ',' ' '); shift 2;;
--exclude-projects) excluded_projects+=$(echo "$2 " | tr ',' ' '); shift 2;;
--tag) tag=$2; shift 2;;
--manifest) MANIFEST=1 ; shift ;;
--manifest-file) repo_set_manifest_file "$2"; shift 2;;
@ -110,7 +115,7 @@ if [ $MANIFEST -eq 1 ]; then
fi
fi
for project in $projects; do
for project in $projects $excluded_projects; do
if ! repo_is_project $project; then
echo_stderr "Invalid project: $project"
echo_stderr "Valid projects are: $(repo_project_list | tr '\n' ' ')"
@ -136,11 +141,24 @@ if [ "$projects" == "" ] && [ "$remotes" == "" ]; then
projects="$(repo_project_list)"
fi
if [ "$projects" != "" ] && [ "$exclude_projects" != "" ]; then
for project in $exclude_projects; do
projects=$(echo $projects | sed -e "s# $project # #" -e "s#^$project ##" -e "s# $project\$##" -e "s#^$project\$##")
done
fi
if [ "$projects" == "" ]; then
echo_stderr "No projects found"
exit 1
fi
echo "List of projects to be pushed"
echo "============================="
for project in $projects; do
echo $project
done
echo "============================="
echo
echo "Finding subgits"
SUBGITS=$(repo forall $projects -c 'echo '"$repo_root_dir"'/$REPO_PATH')