Rebase Mullvad Browser alpha onto Firefox 115.9.0esr
NOTE: All examples in this template reference the rebase from 102.7.0esr to 102.8.0esr
Explanation of Variables
-
$(ESR_VERSION)
: the Mozilla defined ESR version, used in various places for building mullvad-browser tags, labels, etc-
Example:
102.8.0
-
Example:
-
$(ESR_TAG)
: the Mozilla defined hg (Mercurial) tag associated with$(ESR_VERSION)
-
Example:
FIREFOX_102_8_0esr_RELEASE
-
Example:
-
$(BROWSER_MAJOR)
: the browser major version-
Example:
12
-
Example:
-
$(BROWSER_MINOR)
: the browser minor version-
Example: either
0
or5
; Alpha's is always(Stable + 5) % 10
-
Example: either
-
$(BASE_BROWSER_BRANCH)
: the full name of the currentbase-browser
branch-
Example:
base-browser-102.8.0esr-12.5-1
-
Example:
-
$(BASE_BROWSER_BRANCH_PREV)
: the full name of the previousbase-browser
branch-
Example:
base-browser-102.7.0esr-12.5-1
-
Example:
-
$(BASE_BROWSER_BRANCH_TAG)
: thebase-browser
build tag used as base commit formullvad-browser
-
Example:
base-browser-102.8.0esr-12.5-1-build1
-
Example:
-
$(BASE_BROWSER_BRANCH_PREV_TAG)
: thebase-browser
build tag used as base commit for the previousmullvad-browser
-
Example:
base-browser-102.7.0esr-12.5-1-build1
-
Example:
-
$(MULLVAD_BROWSER_BRANCH)
: the full name of the currentmullvad-browser
branch-
Example:
mullvad-browser-102.8.0esr-12.5-1
-
Example:
-
$(MULLVAD_BROWSER_BRANCH_PREV)
: the full name of the previousmullvad-browser
branch-
Example:
mullvad-browser-102.7.0esr-12.5-1
-
Example:
NOTE: It is assumed that we've already rebased and tagged base-browser
alpha and that we've already rebased mullvad-browser
stable
Bookkeeping
-
Link this issue to the appropriate Release Prep issue.
Update Branch Protection Rules
-
In Repository Settings: -
Remove previous alpha mullvad-browser
branch protection rules (this will prevent pushing new changes to the branches being rebased) -
Create new mullvad-browser
branch protection rule:-
Branch:
mullvad-browser-$(ESR_VERSION)esr-$(BROWSER_MAJOR).$(BROWSER_MINOR)-1*
-
Example:
mullvad-browser-102.8.0esr-12.5-1*
-
Example:
-
Allowed to merge:
Maintainers
-
Allowed to push and merge:
Maintainers
-
Allowed to force push:
false
-
Branch:
-
Create and Push New Branch
-
Create new alpha mullvad-browser
branch from this ESR's alphabase-browser
tag- Branch name in the form:
mullvad-browser-$(ESR_VERSION)esr-$(BROWSER_MAJOR).$(BROWSER_MINOR)-1
-
Example:
git branch mullvad-browser-102.8.0esr-12.5-1 base-browser-102.8.0esr-12.5-1-build1
- Branch name in the form:
-
Push new mullvad-browser
branch toupstream
-
Push base-browser
tag toupstream
Rebase tor-browser
-
Checkout a new local branch for the mullvad-browser
rebase-
Example:
git branch mullvad-browser-rebase upstream/mullvad-browser-102.8.0esr-12.5-1
-
Example:
-
mullvad-browser
rebase-
Cherry-pick the previous mullvad-browser
branch's commit range up to the lastmullvad-browser
build1
tag-
Example:
git cherry-pick base-browser-102.7.0esr-12.5-1-build1..mullvad-browser-102.7.0esr-12.5-1-build1
-
Example:
-
Rebase and autosquash these newly cherry-picked commits -
Example:
git rebase --autosquash --interactive upstream/mullvad-browser-102.8.0esr-12.5-1
-
Example:
-
Cherry-pick remainder of patches after the last mullvad-browser
buildN
tag-
Example:
git cherry-pick mullvad-browser-102.7.0esr-12.5-1-build1..upstream/mulvad-browser-102.7.0esr-12.5-1
-
Example:
-
Rebase and autosquash again, this time replacing all fixup
andsquash
commands withpick
. The goal here is to have all of thefixup
andsquash
commits beside the commit which they modify, but kept un-squashed for easy debugging/bisecting.-
Example:
git rebase --autosquash --interactive upstream/mullvad-browser-102.8.0esr-12.5-1
-
Example:
-
-
Compare patch sets to ensure nothing weird happened during conflict resolution: -
diff of diffs: - Do the diff between
current_patchset.diff
andrebased_patchset.diff
with your preferred difftool and look at differences on lines that starts with + or - git diff $(BASE_BROWSER_BRANCH_PREV_TAG)..$(MULLVAD_BROWSER_BRANCH_PREV) > current_patchset.diff
git diff $(BASE_BROWSER_BRANCH_TAG)..HEAD > rebased_patchset.diff
- diff
current_patchset.diff
andrebased_patchset.diff
- If everything went correctly, the only lines which should differ should be the lines starting with
index abc123...def456
(unless the previousbase-browser
branch includes changes not included in the previousmullvad-browser
branch)
- If everything went correctly, the only lines which should differ should be the lines starting with
- Do the diff between
-
rangediff: git range-diff $(BASE_BROWSER_BRANCH_PREV_TAG)..$(MULLVAD_BROWSER_BRANCH_PREV) $(BASE_BROWSER_BRANCH_TAG)..HEAD
-
Example:
git range-diff base-browser-102.7.0esr-12.5-1-build1..upstream/mullvad-browser-102.7.0esr-12.5-1 base-browser-102.8.0esr-12.5-1-build1..HEAD
-
Example:
-
-
Open MR for the mullvad-browser
rebase -
Merge
Sign and Tag
-
Sign/Tag HEAD
of the mergedmullvad-browser
branch:-
Tag:
mullvad-browser-$(ESR_VERSION)esr-$(BROWSER_MAJOR).$(BROWSER_MINOR)-1-build1
-
Message:
Tagging build1 for $(ESR_VERSION)esr-based stable
-
Push tag to upstream
-
Tag: