diff --git a/.gitlab/issue_templates/Rebase Browser - Alpha.md b/.gitlab/issue_templates/Rebase Browser - Alpha.md new file mode 100644 index 0000000000000..f6a09cf5afebc --- /dev/null +++ b/.gitlab/issue_templates/Rebase Browser - Alpha.md @@ -0,0 +1,83 @@ +**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` +- `$(ESR_TAG)`: the Mozilla defined hg (Mercurial) tag associated with `$(ESR_VERSION)` + - **Example**: `FIREFOX_102_8_0esr_RELEASE` +- `$(BROWSER_MAJOR)`: the browser major version + - **Example**: `12` +- `$(BROWSER_MINOR)`: the browser minor version + - **Example**: either `0` or `5`; Alpha's is always `(Stable + 5) % 10` +- `$(BASE_BROWSER_BRANCH)`: the full name of the current `base-browser` branch + - **Example**: `base-browser-102.8.0esr-12.5-1` +- `$(BASE_BROWSER_BRANCH_PREV)`: the full name of the previous `base-browser` branch + - **Example**: `base-browser-102.7.0esr-12.5-1` +- `$(BASE_BROWSER_BRANCH_TAG)`: the `base-browser` build tag used as base commit for `mullvad-browser` + - **Example**: `base-browser-102.8.0esr-12.5-1-build1` +- `$(BASE_BROWSER_BRANCH_PREV_TAG)`: the `base-browser` build tag used as base commit for the previous `mullvad-browser` + - **Example**: `base-browser-102.7.0esr-12.5-1-build1` +- `$(MULLVAD_BROWSER_BRANCH)`: the full name of the current `mullvad-browser` branch + - **Example**: `mullvad-browser-102.8.0esr-12.5-1` +- `$(MULLVAD_BROWSER_BRANCH_PREV)`: the full name of the previous `mullvad-browser` branch + - **Example**: `mullvad-browser-102.7.0esr-12.5-1` +
+ +**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](https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/issues/?sort=updated_desc&state=opened&label_name%5B%5D=Release%20Prep) issue. + +### Update Branch Protection Rules + +- [ ] In [Repository Settings](https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/settings/repository): + - [ ] 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*` + - **Allowed to merge**: `Maintainers` + - **Allowed to push and merge**: `Maintainers` + - **Allowed to force push**: `false` + +### **Create and Push New Branch** + +- [ ] Create new alpha `mullvad-browser` branch from this ESR's alpha `base-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` +- [ ] Push new `mullvad-browser` branch to `upstream` +- [ ] Push `base-browser` tag to `upstream` + +### **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` +- [ ] `mullvad-browser` rebase + - [ ] Cherry-pick the previous `mullvad-browser` branch's commit range up to the last `mullvad-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` + - [ ] Rebase and autosquash these newly cherry-picked commits + - **Example**: `git rebase --autosquash --interactive upstream/mullvad-browser-102.8.0esr-12.5-1` + - [ ] 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` + - [ ] Rebase and autosquash again, this time replacing all `fixup` and `squash` commands with `pick`. The goal here is to have all of the `fixup` and `squash` 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` +- [ ] Compare patch sets to ensure nothing *weird* happened during conflict resolution: + - [ ] diff of diffs: + - Do the diff between `current_patchset.diff` and `rebased_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` and `rebased_patchset.diff` + - If everything went correctly, the only lines which should differ should be the lines starting with `index abc123...def456` (unless the previous `base-browser` branch includes changes not included in the previous `mullvad-browser` branch) + - [ ] 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` +- [ ] Open MR for the `mullvad-browser` rebase +- [ ] Merge + +### **Sign and Tag** + +- [ ] Sign/Tag `HEAD` of the merged `mullvad-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` diff --git a/.gitlab/issue_templates/Rebase Browser - Stable.md b/.gitlab/issue_templates/Rebase Browser - Stable.md new file mode 100644 index 0000000000000..63ba5945af4c7 --- /dev/null +++ b/.gitlab/issue_templates/Rebase Browser - Stable.md @@ -0,0 +1,84 @@ +**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` +- `$(ESR_TAG)`: the Mozilla defined hg (Mercurial) tag associated with `$(ESR_VERSION)` + - **Example**: `FIREFOX_102_8_0esr_RELEASE` +- `$(BROWSER_MAJOR)`: the browser major version + - **Example**: `12` +- `$(BROWSER_MINOR)`: the browser minor version + - **Example**: either `0` or `5`; Alpha's is always `(Stable + 5) % 10` +- `$(BASE_BROWSER_BRANCH)`: the full name of the current `base-browser` branch + - **Example**: `base-browser-102.8.0esr-12.0-1` +- `$(BASE_BROWSER_BRANCH_PREV)`: the full name of the previous `base-browser` branch + - **Example**: `base-browser-102.7.0esr-12.0-1` +- `$(BASE_BROWSER_BRANCH_TAG)`: the `base-browser` build tag used as base commit for `mullvad-browser` + - **Example**: `base-browser-102.8.0esr-12.0-1-build1` +- `$(BASE_BROWSER_BRANCH_PREV_TAG)`: the `base-browser` build tag used as base commit for the previous `mullvad-browser` + - **Example**: `base-browser-102.7.0esr-12.0-1-build1` +- `$(MULLVAD_BROWSER_BRANCH)`: the full name of the current `mullvad-browser` branch + - **Example**: `mullvad-browser-102.8.0esr-12.0-1` +- `$(MULLVAD_BROWSER_BRANCH_PREV)`: the full name of the previous `mullvad-browser` branch + - **Example**: `mullvad-browser-102.7.0esr-12.0-1` +
+ +**NOTE:** It is assumed that we've already rebased and tagged `base-browser` stable + +### **Bookkeeping** + +- [ ] Link this issue to the appropriate [Release Prep](https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/issues/?sort=updated_desc&state=opened&label_name%5B%5D=Release%20Prep) issue. + +### Update Branch Protection Rules + +- [ ] In [Repository Settings](https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/settings/repository): + - [ ] Remove previous stable `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.0-1*` + - **Allowed to merge**: `Maintainers` + - **Allowed to push and merge**: `Maintainers` + - **Allowed to force push**: `false` + +### **Create and Push New Branch** + +- [ ] Create new stable `mullvad-browser` branch from this ESR's stable `base-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.0-1 base-browser-102.8.0esr-12.0-1-build1` +- [ ] Push new `mullvad-browser` branch to `upstream` +- [ ] Push `base-browser` tag to `upstream` +- [ ] Push `$(ESR_TAG)` to `upstream` + +### **Rebase mullvad-browser** + +- [ ] Checkout a new local branch for the `mullvad-browser` rebase + - **Example**: `git branch mullvad-browser-rebase upstream/mullvad-browser-102.8.0esr-12.0-1` +- [ ] `mullvad-browser` rebase + - [ ] Cherry-pick the previous `mullvad-browser` branch's commit range up to the last `mullvad-browser` `build1` tag + - **Example**: `git cherry-pick base-browser-102.7.0esr-12.0-1-build1..mullvad-browser-102.7.0esr-12.0-1-build1` + - [ ] Rebase and autosquash these newly cherry-picked commits + - **Example**: `git rebase --autosquash --interactive upstream/mullvad-browser-102.8.0esr-12.0-1` + - [ ] Cherry-pick remainder of patches after the last `mullvad-browser` `buildN` tag + - **Example**: `git cherry-pick mullvad-browser-102.7.0esr-12.0-1-build1..upstream/mullvad-browser-102.7.0esr-12.0-1` + - [ ] Rebase and autosquash again, this time replacing all `fixup` and `squash` commands with `pick`. The goal here is to have all of the `fixup` and `squash` 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.0-1` +- [ ] Compare patch sets to ensure nothing *weird* happened during conflict resolution: + - [ ] diff of diffs: + - Do the diff between `current_patchset.diff` and `rebased_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` and `rebased_patchset.diff` + - If everything went correctly, the only lines which should differ should be the lines starting with `index abc123...def456` (unless the previous `base-browser` branch includes changes not included in the previous `mullvad-browser` branch) + - [ ] 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.0-1-build1..upstream/mullvad-browser-102.7.0esr-12.5-1 base-browser-102.8.0esr-12.5-1-build1..HEAD` +- [ ] Open MR for the `mullvad-browser` rebase +- [ ] Merge + +### **Sign and Tag** + +- [ ] Sign/Tag `HEAD` of the merged `mullvad-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` diff --git a/.gitlab/merge_request_templates/default.md b/.gitlab/merge_request_templates/default.md index 067042878302a..11f99c2ea9a79 100644 --- a/.gitlab/merge_request_templates/default.md +++ b/.gitlab/merge_request_templates/default.md @@ -3,17 +3,33 @@ ### Related Issues - - mullvad-browser#xxxxx - - tor-browser-build#xxxxx +- tor-browser#xxxxx +- mullvad-browser#xxxxx +- tor-browser-build#xxxxx -### Backport Timeline - - [ ] **Immediate** - patchsets for critical bug fixes or other major blocker (e.g. fixes for a 0-day exploit) OR patchsets with trivial changes which do not need testing (e.g. fixes for typos or fixes easily verified in a local developer build) - - [ ] **Next Minor Stable Release** - patchset that needs to be verified in nightly before backport - - [ ] **Eventually** - patchset that needs to be verified in alpha before backport - - [ ] **No Backport** - patchset for the next major stable +### Backporting + +#### Timeline +- [ ] **Immediate**: patchset needed as soon as possible +- [ ] **Next Minor Stable Release**: patchset that needs to be verified in nightly before backport +- [ ] **Eventually**: patchset that needs to be verified in alpha before backport +- [ ] **No Backport (preferred)**: patchset for the next major stable + +#### (Optional) Justification +- [ ] **Emergency security update**: patchset fixes CVEs, 0-days, etc +- [ ] **Censorship event**: patchset enables censorship circumvention +- [ ] **Critical bug-fix**: patchset fixes a bug in core-functionality +- [ ] **Consistency**: patchset which would make development easier if it were in both the alpha and release branches; developer tools, build system changes, etc +- [ ] **Sponsor required**: patchset required for sponsor +- [ ] **Other**: please explain + +### Merging +- [ ] Merge to `mullvad-browser` - `!fixups` to `tor-browser`-specific commits, new features, security backports +- [ ] Merge to `base-browser` -`!fixups` to `base-browser`-specific commits, new features to be shared with `mullvad-browser`, and security backports + - **NOTE**: if your changeset includes patches to both `base-browser` and `mullvad-browser` please clearly label in the change description which commits should be cherry-picked to `base-browser` after merging ### Issue Tracking - - [ ] Link resolved issues with appropriate [Release Prep issue](https://gitlab.torproject.org/groups/tpo/applications/-/issues/?sort=updated_desc&state=opened&label_name%5B%5D=Release%20Prep&first_page_size=20) for changelog generation +- [ ] Link resolved issues with appropriate [Release Prep issue](https://gitlab.torproject.org/groups/tpo/applications/-/issues/?sort=updated_desc&state=opened&label_name%5B%5D=Release%20Prep&first_page_size=20) for changelog generation ## Change Description