Rebase stable 12.5 to 102.14esr
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.diff
- git 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:- 
Tag: tor-browser-$(ESR_VERSION)esr-$(BROWSER_MAJOR).$(BROWSER_MINOR)-1-build1
- 
Message: Tagging build1 for $(ESR_VERSION)esr-based stable
- 
Push tag to upstream
 
- 
Tag: 
- 
Sign/Tag HEAD of the merged base-browserbranch:- 
Tag: base-browser-$(ESR_VERSION)esr-$(BROWSER_MAJOR).$(BROWSER_MINOR)-1-build1
- 
Message: Tagging build1 for $(ESR_VERSION)esr-based stable
- 
Push tag to upstream
 
- 
Tag: 
Edited  by ma1