Rebase Tor Browser Legacy onto 115.28
⤵️ Rebase Legacy
NOTE: All examples in this template reference the rebase from 115.17.0esr to 115.18.0esr
Explanation of Variables
-
$(ESR_VERSION)
: the Mozilla defined ESR version, used in various places for building tor-browser tags, labels, etc-
Example:
115.18.0
-
Example:
-
$(ESR_TAG)
: the Mozilla defined hg (Mercurial) tag associated with$(ESR_VERSION)
-
Example:
FIREFOX_115_18_0esr_BUILD1
-
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_115_17_0esr_BUILD1
-
Example:
-
$(BASE_BROWSER_BRANCH)
: the full name of the currentbase-browser
branch-
Example:
base-browser-115.18.0esr-13.5-1
-
Example:
-
$(BASE_BROWSER_BRANCH_PREV)
: the full name of the previousbase-browser
branch-
Example:
base-browser-115.17.0esr-13.5-1
-
Example:
-
$(TOR_BROWSER_BRANCH)
: the full name of the currenttor-browser
branch-
Example:
tor-browser-115.18.0esr-13.5-1
-
Example:
-
$(TOR_BROWSER_BRANCH_PREV)
: the full name of the previoustor-browser
branch-
Example:
tor-browser-115.17.0esr-13.5-1
-
Example:
Bookkeeping
-
Link this issue to the appropriate Release Prep issue.
Update Branch Protection Rules
-
In Repository Settings: -
Remove previous legacy base-browser
andtor-browser
branch protection rules (this will prevent pushing new changes to the branches being rebased) -
Create new tor-browser
branch protection rule:-
Branch:
tor-browser-$(ESR_VERSION)esr-13.5-1*
-
Example:
tor-browser-115.18.0esr-13.5-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
-
Fetch Mozilla's firefox repo and identify this release's ESR-115 ${ESR_TAG} -
Create new legacy tor-browser
branch from- Branch name in the form:
tor-browser-$(ESR_VERSION)esr-13.5-1
-
Example:
tor-browser-115.18.0esr-13.5-1
- Branch name in the form:
-
Push new tor-browser
branch toupstream
-
Push new $(ESR_TAG)
toupstream
Rebase tor-browser
-
Checkout a new local branch for the tor-browser
rebase-
Example:
git branch tor-browser-rebase FIREFOX_115_18_0esr_BUILD1
-
Example:
-
tor-browser
rebase-
Note the current git hash of HEAD
fortor-browser
rebase+autosquash step:git rev-parse HEAD
-
Cherry-pick the appropriate previous tor-browser
branch's commit range up to the lasttor-browser
build1
tag-
Example:
git cherry-pick FIREFOX_115_17_0esr_BUILD1..tor-browser-115.17.0esr-13.5-1-build2
-
Example:
-
Rebase and autosquash these newly cherry-picked commits: git rebase --autosquash --interactive $(PREV_HEAD)
-
Example:
git rebase --autosquash --interactive FIREFOX_115_18_0esr_BUILD1
-
Example:
-
Cherry-pick remainder of patches after the last tor-browser
build1
tag-
Example:
git cherry-pick tor-browser-115.17.0esr-13.5-1-build1..upstream/tor-browser-115.17.0esr-13.5-1
-
Example:
-
Rebase and pick
new security backport patches to the end of the MOZILLA BACKPORTS section of the commit history-
Example:
git rebase --interactive FIREFOX_115_18_0esr_BUILD1
-
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 FIREFOX_115_18_0esr_BUILD1
-
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 $(ESR_TAG_PREV)..$(BROWSER_BRANCH_PREV) > current_patchset.diff
git diff $(ESR_TAG)..$(BROWSER_BRANCH) > 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
- 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_115_17_0esr_BUILD1..upstream/tor-browser-115.17.0esr-13.5-1 FIREFOX_115_18_0esr_BUILD1..HEAD
-
Example:
-
-
Open MR for the tor-browser
rebase -
Merge
Sign and Tag
-
Sign/Tag HEAD
of the mergedtor-browser
branch:- In tor-browser.git, checkout the new legacy
tor-browser
branch - In tor-browser-build.git, run signing script:
./tools/browser/sign-tag.torbrowser legacy build1
-
Push tag to upstream
- In tor-browser.git, checkout the new legacy