Rebase Tor Browser release onto 128.0.8esr
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 tor-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:
-
$(ESR_TAG_PREV): the Mozilla defined hg (Mercurial) tag associated with the previous ESR version when rebasing (ie, the ESR version we are rebasing from)-
Example:
FIREFOX_102_7_0esr_BUILD1
-
Example:
-
$(BROWSER_MAJOR): the browser major version-
Example:
12
-
Example:
-
$(BROWSER_MINOR): the browser minor version-
Example: either
0or5; Alpha's is always(Stable + 5) % 10
-
Example: either
-
$(BASE_BROWSER_BRANCH): the full name of the currentbase-browserbranch-
Example:
base-browser-102.8.0esr-12.0-1
-
Example:
-
$(BASE_BROWSER_BRANCH_PREV): the full name of the previousbase-browserbranch-
Example:
base-browser-102.7.0esr-12.0-1
-
Example:
-
$(TOR_BROWSER_BRANCH): the full name of the currenttor-browserbranch-
Example:
tor-browser-102.8.0esr-12.0-1
-
Example:
-
$(TOR_BROWSER_BRANCH_PREV): the full name of the previoustor-browserbranch-
Example:
tor-browser-102.7.0esr-12.0-1
-
Example:
Bookkeeping
-
Link this issue to the appropriate Release Prep issue.
Update Branch Protection Rules
-
In Repository Settings: -
Remove previous stable base-browserandtor-browserbranch protection rules (this will prevent pushing new changes to the branches being rebased) -
Create new base-browserandtor-browserbranch protection rule:-
Branch:
*-$(ESR_VERSION)esr-$(BROWSER_MAJOR).$(BROWSER_MINOR)-1*-
Example:
*-102.8.0esr-12.0-1*
-
Example:
-
Allowed to merge:
Maintainers -
Allowed to push and merge:
Maintainers -
Allowed to force push:
false
-
Branch:
-
Identify the Firefox Tagged Commit and Create New Branches
-
Find the Firefox mercurial tag here: https://hg.mozilla.org/releases/mozilla-esr102/tags -
Example:
FIREFOX_102_8_0esr_BUILD1
-
Example:
-
Find the analogous gecko-devcommit: https://github.com/mozilla/gecko-dev-
Tip: Search for unique string (like the Differential Revision ID) found in the mercurial commit in the
gecko-dev/esr102branch to find the equivalent commit -
Example:
3a3a96c9eedd02296d6652dd50314fccbc5c4845
-
Tip: Search for unique string (like the Differential Revision ID) found in the mercurial commit in the
-
Sign and Tag gecko-devcommit- Sign/Tag
gecko-devcommit :-
Tag:
$(ESR_TAG) -
Message:
Hg tag $(ESR_TAG)
-
Tag:
- Sign/Tag
-
Create new stable base-browserbranch from tag- Branch name in the form:
base-browser-$(ESR_VERSION)esr-$(BROWSER_MAJOR).$(BROWSER_MINOR)-1 -
Example:
base-browser-102.8.0esr-12.0-1
- Branch name in the form:
-
Create new stable tor-browserbranch from- Branch name in the form:
tor-browser-$(ESR_VERSION)esr-$(BROWSER_MAJOR).$(BROWSER_MINOR)-1 -
Example:
tor-browser-102.8.0esr-12.0-1
- Branch name in the form:
-
Push new base-browserbranch toupstream -
Push new tor-browserbranch toupstream -
Push new $(ESR_TAG)toupstream
Rebase tor-browser
-
Checkout a new local branch for the tor-browserrebase-
Example:
git branch tor-browser-rebase FIREFOX_102_8_0esr_BUILD1
-
Example:
-
(Optional) base-browserrebase-
NOTE This step may be skipped if the
HEADof the previousbase-browserbranch is a-buildNtag -
Cherry-pick the previous base-browsercommits up tobase-browser'sbuildNtag onto newbase-browserrebase branch-
Example:
git cherry-pick FIREFOX_102_7_0esr_BUILD1..base-browser-102.7.0esr-12.0-1-build1
-
Example:
-
Rebase and autosquash these cherry-picked commits -
Example:
git rebase --autosquash --interactive FIREFOX_102_8_0esr_BUILD1 HEAD
-
Example:
-
Cherry-pick remainder of patches after the buildNtag-
Example:
git cherry-pick base-browser-102.7.0esr-12.0-1-build1..upstream/base-browser-102.7.0esr-12.0-1
-
Example:
-
NOTE This step may be skipped if the
-
tor-browserrebase-
Note the current git hash of HEADfortor-browserrebase+autosquash step:git rev-parse HEAD -
Cherry-pick the appropriate previous tor-browserbranch's commit range up to the lasttor-browserbuildNtag-
Example:
git cherry-pick base-browser-102.7.0esr-12.0-1-build1..tor-browser-102.7.0esr-12.0-1-build1 -
Example (if separate base-browser rebase was skipped):
git cherry-pick FIREFOX_102_7_0esr_BUILD1..tor-browser-102.7.0esr-12.0-1-build1
-
Example:
-
Rebase and autosquash these newly cherry-picked commits: git rebase --autosquash --interactive $(PREV_HEAD)-
Example:
git rebase --autosquash --interactive FIREFOX_102_8_0esr_RELEASE
-
Example:
-
Cherry-pick remainder of patches after the last tor-browserbuildNtag-
Example:
git cherry-pick tor-browser-102.7.0esr-12.0-1-build1..upstream/tor-browser-102.7.0esr-12.0-1
-
Example:
-
Rebase and autosquash again, this time replacing all fixupandsquashcommands withpick. The goal here is to have all of thefixupandsquashcommits beside the commit which they modify, but kept un-squashed for easy debugging/bisecting.-
Example:
git rebase --autosquash --interactive FIREFOX_102_8_0esr_RELEASE
-
Example:
-
-
Compare patch sets to ensure nothing weird happened during conflict resolution: -
diff of diffs: - Do the diff between
current_patchset.diffandrebased_patchset.diffwith your preferred difftool and look at differences on lines that starts with + or - git diff $(ESR_TAG_PREV)..$(BROWSER_BRANCH_PREV) > current_patchset.diffgit diff $(ESR_TAG)..$(BROWSER_BRANCH) > rebased_patchset.diff- diff
current_patchset.diffandrebased_patchset.diff- If everything went correctly, the only lines which should differ should be the lines starting with
index abc123...def456(unless the previousbase-browserbranch includes changes not included in the previoustor-browserbranch)
- If everything went correctly, the only lines which should differ should be the lines starting with
- Do the diff between
-
rangediff: git range-diff $(ESR_TAG_PREV)..$(TOR_BROWSER_BRANCH_PREV) $(ESR_TAG)..HEAD-
Example:
git range-dif FIREFOX_102_7_0esr_BUILD1..upstream/tor-browser-102.7.0esr-12.0-1 FIREFOX_102_8_0esr_BUILD1..HEAD
-
Example:
-
-
Open MR for the tor-browserrebase -
Merge - Update and push
base-browserbranch-
Reset the new base-browserbranch to the appropriate commit in this newtor-browserbranch -
Push these commits to upstream
-
Sign and Tag
-
Sign/Tag HEADof the mergedtor-browserbranch:- In tor-browser.git, checkout the new stable
tor-browserbranch - In tor-browser-build.git, run signing script:
./tools/browser/sign-tag.torbrowser stable build1 -
Push tag to upstream
- In tor-browser.git, checkout the new stable
-
Sign/Tag HEAD of the merged base-browserbranch:- In tor-browser.git, checkout the new stable
base-browserbranch - In tor-browser-build.git, run signing script:
./tools/browser/sign-tag.basebrowser stable build1 -
Push tag to upstream
- In tor-browser.git, checkout the new stable
Edited by ma1