build: detach 4.3 branches from 4.4 branches

Starting from this commit, there will be no more merges from 4.3 to 4.4.
That is: fixes affecting both 4.3 and 4.4 will have to be sent
in separate pull requests.

This change is due to two reasons:
1. The ever increasing divergence from 4.4 is making the merges
   to cause more and more conflicts which are also harder to resolve
2. Opensource edition 4.3 has come to the 18-month EOL by November 2022
This commit is contained in:
Zaiming (Stone) Shi 2022-11-23 23:11:56 +01:00
parent d166d217ca
commit eda6df7a19
2 changed files with 21 additions and 28 deletions

View File

@ -10,13 +10,13 @@ usage() {
cat <<EOF
$0 RELEASE_GIT_TAG [option]
RELEASE_GIT_TAG is a 'v*' or 'e*' tag for example:
v4.3.21
v4.4.10
e4.4.10-alpha.2
options:
-h|--help: Print this usage.
-b|--base: Specify the current release base branch, can be one of
release-v43, release-v44, release-e43, or release-e44.
release-v44, release-e43, or release-e44.
NOTE: this option should be used when --dryrun.
--dryrun: Do not actually create the git tag.
--skip-appup: Skip checking appup
@ -25,17 +25,20 @@ options:
NOTE: When cutting a 'e*' tag release, both the opensource and enterprise
repos should be found as a fetch-remote in the current git repo.
NOTE: For 4.3 series the current working branch must be 'release-v43' for opensource edition
and 'release-e43' for enterprise edition.
--.--[main-v4.3]------------------.-----------.---
NOTE: For 4.4 series the current working branch must be 'release-v44' for opensource edition
and 'release-e44' for enterprise edition.
--.--[main-v4.4]------------------.-----------.---
\\ / \\
\`---[release-v43]----(v4.3.X) \\
\`---[release-v44]----(v4.4.X) \\
\\ \\
.---[release-e43]-------------'--(e4.3.Y) \\
.---[release-e44]-------------'--(e4.4.Y) \\
/ \\ V
--'------[main-v4.3-enterprise]---------------'----'---
The same applies to 4.4 series, however, a 4.3 branch is also the upstream branch
for the corresponding 4.4 branch. e.g. release-e44 has two upstreams: release-v44 and release-e43
--'------[main-v4.4-enterprise]---------------'----'---
NOTE: For 4.3 opensource edition, it reached its 18-month EOL in November 2022.
only enterprise edition will be continue supported.
For issues affecting both 4.3 and 4.4, two separate PRs should be created
one for main-v4.3-enterprise and another for main-v4.4 or main-v4.4-enterprise
EOF
}
@ -46,9 +49,6 @@ logmsg() {
echo "INFO: $1"
}
REL_BRANCH_CE="${REL_BRANCH_CE:-release-v43}"
REL_BRANCH_EE="${REL_BRANCH_EE:-release-e43}"
TAG="${1:-}"
case "$TAG" in
@ -115,9 +115,6 @@ done
rel_branch() {
local tag="$1"
case "$tag" in
v4.3.*)
echo 'release-v43'
;;
e4.3.*)
echo 'release-e43'
;;

View File

@ -19,14 +19,10 @@ options:
It tries to merge (by default with --ff-only option)
upstreams branches for the current working branch.
The uppstream branch of the current branch are as below:
* v43: [] # no upstream for 4.3 opensource edition
* e43: [v43] # 4.3 enterprise has 4.3 opensource as upstream
* v44: [v43] # 4.4 opensource has 4.3 opensource as upstream
* e44: [e43, v44, v43] # 4.4 enterprise has all the above 3 as upstream
For e44:
v43 is an indirect upstream.
Ideally the merge of v43 should be done through v44 or e43,
but it does not hurt to apply a direct merge.
* v43: [] # no upstream for 4.3 opensource edition
* e43: [v43] # 4.3 enterprise has 4.3 opensource as upstream
* v44: [] # no upstream for 4.4 opensource edition (since November 2022)
* e44: [v44] # 4.4 enterprise has all the above 3 as upstream
-b|--base:
The base branch of current working branch if currently is not
@ -173,25 +169,25 @@ upstream_branches() {
remote_ref "$base"
;;
release-v44)
remote_refs "$base" 'release-v43'
remote_refs "$base"
;;
release-e43)
remote_refs "$base" 'release-v43'
;;
release-e44)
remote_refs "$base" 'release-v44' 'release-e43' 'release-v43'
remote_refs "$base" 'release-v44'
;;
main-v4.3)
remote_refs "$base" 'release-v43'
;;
main-v4.4)
remote_refs "$base" 'release-v44' 'main-v4.3'
remote_refs "$base" 'release-v44'
;;
main-v4.3-enterprise)
remote_refs "$base" 'release-e43' 'main-v4.3'
;;
main-v4.4-enterprise)
remote_refs "$base" 'release-e44' 'main-v4.4' 'main-v4.3-enterprise' 'main-v4.3'
remote_refs "$base" 'release-e44' 'main-v4.4'
;;
esac
}