[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [Git][tpo/applications/tor-browser][tor-browser-147.0a1-16.0-2] 2 commits: fixup! BB 43615: Add Gitlab Issue and Merge Request templates



Title: GitLab

brizental pushed to branch tor-browser-147.0a1-16.0-2 at The Tor Project / Applications / Tor Browser

Commits:

  • 0a86acd8
    by Beatriz Rizental at 2026-01-28T15:26:23+00:00
    fixup! BB 43615: Add Gitlab Issue and Merge Request templates
    
    Delete Rebase templates from Base Browser
    
  • 4ccf290c
    by Beatriz Rizental at 2026-01-28T15:26:23+00:00
    fixup! TB 43616: Customize Gitlab Issue and Merge Request templates
    
    Update rebase templates
    

5 changed files:

Changes:

  • .gitlab/issue_templates/060 Rebase - Alpha.md
    1 1
     # ⤵️ Rebase Alpha
    
    2 2
     
    
    3
    -**NOTE:** All examples in this template reference the rebase from 102.7.0esr to 102.8.0esr
    
    4
    -
    
    5
    -<details>
    
    6
    -  <summary>Explanation of Variables</summary>
    
    7
    -
    
    8
    -- `$(ESR_VERSION)`: the Mozilla defined ESR version, used in various places for building tor-browser tags, labels, etc
    
    9
    -  - **Example**: `102.8.0`
    
    10
    -- `$(ESR_TAG)`: the Mozilla defined hg (Mercurial) tag associated with `$(ESR_VERSION)`
    
    11
    -  - **Example**: `FIREFOX_102_8_0esr_RELEASE`
    
    12
    -- `$(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)
    
    13
    -  - **Example**: `FIREFOX_102_7_0esr_BUILD1`
    
    14
    -- `$(BROWSER_MAJOR)`: the browser major version
    
    15
    -  - **Example**: `12`
    
    16
    -- `$(BROWSER_MINOR)`: the browser minor version
    
    17
    -  - **Example**: either `0` or `5`; Alpha's is always `(Stable + 5) % 10`
    
    18
    -- `$(BASE_BROWSER_BRANCH)`: the full name of the current `base-browser` branch
    
    19
    -  - **Example**: `base-browser-102.8.0esr-12.5-1`
    
    20
    -- `$(BASE_BROWSER_BRANCH_PREV)`: the full name of the previous `base-browser` branch
    
    21
    -  - **Example**: `base-browser-102.7.0esr-12.5-1`
    
    22
    -- `$(TOR_BROWSER_BRANCH)`: the full name of the current `tor-browser` branch
    
    23
    -  - **Example**: `tor-browser-102.8.0esr-12.5-1`
    
    24
    -- `$(TOR_BROWSER_BRANCH_PREV)`: the full name of the previous `tor-browser` branch
    
    25
    -  - **Example**: `tor-browser-102.7.0esr-12.5-1`
    
    26
    -</details>
    
    27
    -
    
    28
    -**NOTE:** It is assumed that we've already identified the new ESR branch during the tor-browser stable rebase
    
    29
    -
    
    30
    -### **Bookkeeping**
    
    3
    +## **Bookkeeping**
    
    31 4
     
    
    32 5
     - [ ] 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=Apps%3A%3AType%3A%3AReleasePreparation) issue.
    
    33 6
     - [ ] Create "Firefox Release Review" issue for this version
    
    34 7
       - **NOTE**: We have issues open through Firefox 153 so this can be skipped until we get to Firefox 154
    
    35 8
     
    
    36
    -### **Update Branch Protection Rules**
    
    37
    -
    
    38
    -- [ ] In [Repository Settings](https://gitlab.torproject.org/tpo/applications/tor-browser/-/settings/repository):
    
    39
    -  - [ ] Remove previous alpha `base-browser` and `tor-browser` branch protection rules (this will prevent pushing new changes to the branches being rebased)
    
    40
    -  - [ ] Create new `base-browser` and `tor-browser` branch protection rule:
    
    41
    -    - **Branch**: `(tor|base)-browser-$(ESR_VERSION)esr-$(BROWSER_MAJOR).$(BROWSER_MINOR)-1*`
    
    42
    -      - **Example**: `(tor|base)-browser-102.8.0esr-12.5-1*`
    
    43
    -    - **Allowed to merge**: `Maintainers`
    
    44
    -    - **Allowed to push and merge**: `Maintainers`
    
    45
    -    - **Allowed to force push**: `false`
    
    46
    -    - If you copied and pasted from old rules, double check you didn't add spaces at the end, as GitLab will not trim them!
    
    47
    -
    
    48
    -### **Create New Branches**
    
    49
    -
    
    50
    -- [ ] Fetch Mozilla's firefox repo and identify this release's ${ESR_TAG}
    
    51
    -- [ ] Create new alpha `base-browser` branch from Firefox ${ESR_TAG}
    
    52
    -  - Branch name in the form: `base-browser-$(ESR_VERSION)esr-$(BROWSER_MAJOR).$(BROWSER_MINOR)-1`
    
    53
    -  - **Example**: `base-browser-102.8.0esr-12.5-1`
    
    54
    -- [ ] Create new alpha `tor-browser` branch from Firefox mercurial tag
    
    55
    -  - Branch name in the form: `tor-browser-$(ESR_VERSION)esr-$(BROWSER_MAJOR).$(BROWSER_MINOR)-1`
    
    56
    -  - **Example**: `tor-browser-102.8.0esr-12.5-1`
    
    57
    -- [ ] Push new `base-browser` branch to `upstream`
    
    58
    -- [ ] Push new `tor-browser` branch to `upstream`
    
    59
    -
    
    60
    -### **Rebase tor-browser**
    
    61
    -
    
    62
    -- [ ] Checkout a new local branch for the `tor-browser` rebase
    
    63
    -  - **Example**: `git branch tor-browser-rebase FIREFOX_102_8_0esr_BUILD1`
    
    64
    -- [ ] **(Optional)** `base-browser` rebase and autosquash
    
    65
    -  - **NOTE** This step may be skipped if the `HEAD` of the previous `base-browser` branch is a `-buildN` tag
    
    66
    -  - [ ] Cherry-pick the previous `base-browser` commits up to `base-browser`'s `buildN` tag onto new `base-browser` rebase branch
    
    67
    -    - **Example**: `git cherry-pick FIREFOX_102_7_0esr_BUILD1..base-browser-102.7.0esr-12.5-1-build1`
    
    68
    -  - [ ] Rebase and autosquash these cherry-picked commits
    
    69
    -    - **Example**: `git rebase --autosquash --interactive FIREFOX_102_8_0esr_BUILD1 HEAD`
    
    70
    -  - [ ] Cherry-pick remainder of patches after the `buildN` tag
    
    71
    -    - **Example**: `git cherry-pick base-browser-102.7.0esr-12.5-1-build1..upstream/base-browser-102.7.0esr-12.5-1`
    
    72
    -
    
    73
    -- [ ] `tor-browser` rebase and autosquash
    
    74
    -  - [ ] Note the current git hash of `HEAD` for `tor-browser` rebase+autosquash step: `git rev-parse HEAD`
    
    75
    -  - [ ] Cherry-pick the appropriate previous `tor-browser` branch's commit range up to the last `tor-browser` `buildN` tag
    
    76
    -    - **Example**: `git cherry-pick base-browser-102.7.0esr-12.5-1-build1..tor-browser-102.7.0esr-12.5-1-build1`
    
    77
    -    - **Example (if separate base-browser rebase was skipped)**: `git cherry-pick FIREFOX_102_7_0esr_BUILD1..tor-browser-102.7.0esr-12.5-1-build1`
    
    78
    -  - [ ] Rebase and autosquash  **ONLY** these newly cherry-picked commits using the commit noted previously: `git rebase --autosquash --interactive $(PREV_HEAD)`
    
    79
    -     - **Example**: `git rebase --autosquash --interactive FIREFOX_102_8_0esr_RELEASE`
    
    80
    -  - [ ] **(Optional)** Patch reordering
    
    81
    -    - **NOTE**: We typically want to do this after new features or bug fix commits which are not !fixups to an existing commit have been merged and are just sitting at the end of the commit history
    
    82
    -    - Relocate new `base-browser` patches in the patch-set to enforce this rough thematic ordering:
    
    83
    -      - **MOZILLA BACKPORTS** - official Firefox patches we have backported to our ESR branch: Android-specific security updates, critical bug fixes, worthwhile features, etc
    
    84
    -      - **MOZILLA REVERTS** - revert commits of official Firefox patches
    
    85
    -      - **UPLIFT CANDIDATES** - patches which stand on their own and should be uplifted to `mozilla-central`
    
    86
    -      - **BUILD CONFIGURATION** - tools/scripts, gitlab templates, etc
    
    87
    -      - **BROWSER CONFIGURATION** - branding, mozconfigs, preference overrides, etc
    
    88
    -      - **SECURITY PATCHES** - security improvements, hardening, etc
    
    89
    -      - **PRIVACY PATCHES** - fingerprinting, linkability, proxy bypass, etc
    
    90
    -      - **FEATURES** - new functionality: updater, UX, letterboxing, security level, add-on
    
    91
    -    - Relocate new `tor-browser` patches in the patch-set to enforce this rough thematic ordering:
    
    92
    -      - **BUILD CONFIGURATION** - tools/scripts, gitlab templates, etc
    
    93
    -      - **BROWSER CONFIGURATION** - branding, mozconfigs, preference overrides, etc
    
    94
    -      - **UPDATER PATCHES** - updater tweaks, signing keys, etc
    
    95
    -      - **SECURITY PATCHES** - non tor-dependent security improvements, hardening, etc
    
    96
    -      - **PRIVACY PATCHES** - non tor-dependent fingerprinting, linkability, proxy bypass, etc
    
    97
    -      - **FEAURES** - non tor-dependent features
    
    98
    -      - **TOR INTEGRATION** - legacy tor-launcher/torbutton, tor modules, bootstrapping, etc
    
    99
    -      - **TOR SECURITY PATCHES** - tor-specific security improvements
    
    100
    -      - **TOR PRIVACY PATCHES** - tor-specific privacy improvements
    
    101
    -      - **TOR FEATURES** - new tor-specific functionality: manual, onion-location, onion service client auth, etc
    
    102
    -  - [ ] Cherry-pick remainder of patches after the last `tor-browser` `buildN` tag
    
    103
    -    - **Example**: `git cherry-pick tor-browser-102.7.0esr-12.5-1-build1..upstream/tor-browser-102.7.0esr-12.5-1`
    
    104
    -  - [ ] Rebase and `pick` new security backport patches to the end of the **MOZILLA BACKPORTS** section of the commit history
    
    105
    -    - **Example**: `git rebase --interactive FIREFOX_102_8_0esr_RELEASE`
    
    106
    -  - [ ] 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.
    
    107
    -    - **Example**: `git rebase --autosquash --interactive FIREFOX_102_8_0esr_RELEASE`
    
    108
    -- [ ] Compare patch sets to ensure nothing *weird* happened during conflict resolution:
    
    109
    -  - [ ] diff of diffs:
    
    110
    -    -  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 -
    
    111
    -    - `git diff $(ESR_TAG_PREV)..$(BROWSER_BRANCH_PREV) > current_patchset.diff`
    
    112
    -    - `git diff $(ESR_TAG)..$(BROWSER_BRANCH) > rebased_patchset.diff`
    
    113
    -    - diff `current_patchset.diff` and `rebased_patchset.diff`
    
    114
    -      - 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 `tor-browser` branch)
    
    115
    -  - [ ] rangediff: `git range-diff $(ESR_TAG_PREV)..$(TOR_BROWSER_BRANCH_PREV) $(ESR_TAG)..HEAD`
    
    116
    -    - **Example**: `git range-dif FIREFOX_102_7_0esr_BUILD1..upstream/tor-browser-102.7.0esr-12.5-1 FIREFOX_102_8_0esr_BUILD1..HEAD`
    
    117
    -- [ ] Open MR for the `tor-browser` rebase
    
    118
    -- [ ] Merge
    
    119
    -- Update and push `base-browser` branch
    
    120
    -  - [ ] Reset the new `base-browser` branch to the appropriate commit in this new `tor-browser` branch
    
    121
    -  - [ ] Push these commits to `upstream`
    
    122
    -- [ ] Set `$(TOR_BROWSER_BRANCH)` as the default GitLab branch
    
    123
    -  - [ ] Go to [Repository Settings](https://gitlab.torproject.org/tpo/applications/tor-browser/-/settings/repository)
    
    124
    -  - [ ] Expand `Branch defaults`
    
    125
    -  - [ ] Set the branch and leave the `Auto-close` checkbox unchecked
    
    126
    -  - [ ] Save changes
    
    127
    -
    
    128
    -### **Sign and Tag**
    
    129
    -
    
    130
    -- [ ] Sign/Tag `HEAD` of the merged `tor-browser` branch:
    
    131
    -  - In **tor-browser.git**, checkout the new alpha `tor-browser` branch
    
    132
    -  - In **tor-browser-build.git**, run signing script:
    
    133
    -    ```bash
    
    134
    -    ./tools/browser/sign-tag.torbrowser alpha build1
    
    135
    -    ```
    
    136
    -  - [ ] Push tag to `upstream`
    
    137
    -- [ ] Sign/Tag HEAD of the merged `base-browser` branch:
    
    138
    -  - In **tor-browser.git**, checkout the new alpha `base-browser` branch
    
    139
    -  - In **tor-browser-build.git**, run signing script:
    
    140
    -    ```bash
    
    141
    -    ./tools/browser/sign-tag.basebrowser alpha build1
    
    142
    -    ```
    
    143
    -  - [ ] Push tag to `upstream`
    
    144
    -- [ ] Update tor-browser-build's `main` branch (no MR required, you can just push it if you have the permissions)
    
    145
    -  - [ ] Update `projects/firefox/config`
    
    146
    -    - [ ] Update `firefox_platform_version`
    
    147
    -    - [ ] Set `browser_build` to 1 (to prevent failures in alpha testbuilds)
    
    148
    -  - [ ] Update `projects/geckoview/config`
    
    149
    -    - [ ] Update `firefox_platform_version`
    
    150
    -    - [ ] Set `browser_build` to 1 (to prevent failures in alpha testbuilds)
    
    151
    -
    
    152
    -<!-- Do not edit beneath this line <3 -->
    
    9
    +## **Rebase**
    
    10
    +
    
    11
    +The step-by-step rebase process is detailed on the [Rebase Process](https://gitlab.torproject.org/tpo/applications/wiki/-/wikis/Development-Information/Rebase/Rebase-Process) wiki page. Refer to it for detailed instructions on how to perform each step.
    
    12
    +
    
    13
    +- Rebase application-services
    
    14
    +  - uniffi-rs
    
    15
    +    - Prepare the rebase
    
    16
    +      - [ ] Verify if application-services has updated it's uniffi-rs version
    
    17
    +      - [ ] Get the [upstream](https://github.com/mozilla/uniffi-rs) tag
    
    18
    +      - [ ] Freeze the current default branch
    
    19
    +      - [ ] Create the target branch (`X.XX.X`)
    
    20
    +    - [ ] Rebase
    
    21
    +    - Merge
    
    22
    +      - [ ] Perform a self-review
    
    23
    +      - [ ] Build
    
    24
    +      - [ ] File a merge request
    
    25
    +    - Tag and update the repository
    
    26
    +      - [ ] Tag `vX.XX.X`
    
    27
    +      - [ ] Make `X.XX.X` the default branch
    
    28
    +  - application-services
    
    29
    +    - Prepare the rebase
    
    30
    +      - [ ] Get the [upstream](github.com/mozilla/application-services) tag
    
    31
    +      - [ ] Freeze the current default branch
    
    32
    +      - [ ] Create the target branch (`XXX.X-TORBROWSER`)
    
    33
    +    - Do the rebase
    
    34
    +      - [ ] Cherry-pick commits
    
    35
    +      - [ ] Squash _all_ `fixup!` commits
    
    36
    +    - Merge
    
    37
    +      - [ ] Perform a self-review
    
    38
    +      - [ ] Build
    
    39
    +      - [ ] File a merge request
    
    40
    +    - [ ] Tag and update the repository
    
    41
    +      - [ ] Tag `vXXX.X-TORBROWSER-build1`
    
    42
    +      - [ ] Make `XXX.X-TORBROWSER` the default branch
    
    43
    +
    
    44
    +- Rebase Tor Browser
    
    45
    +  - Prepare the rebase
    
    46
    +    - [ ] Get the [Firefox](https://github.com/mozilla-firefox/firefox) tag
    
    47
    +  - Do the rebase [Part 1]
    
    48
    +    - [ ] Create the target branch (`tor-browser-...-1`)
    
    49
    +    - [ ] Cherry-pick commits until `tor-browser-...-build1`
    
    50
    +    - [ ] Freeze the current default branch
    
    51
    +    - [ ] Cherry-pick remaining commits
    
    52
    +    - Merge
    
    53
    +      - [ ] Perform a self-review (`git range-diff`)
    
    54
    +      - [ ] Run linters
    
    55
    +      - [ ] Build and test
    
    56
    +        - [ ] Desktop
    
    57
    +        - [ ] Android
    
    58
    +      - [ ] File a merge request
    
    59
    +    - Tag and update the repository
    
    60
    +      - [ ] Tag `tor-browser-...-1-build1`
    
    61
    +      - [ ] Tag `tor-browser-...-1-build2`
    
    62
    +      - [ ] Make `tor-browser-...-1` the default branch and freeze it
    
    63
    +  - Do the rebase [Part 2]
    
    64
    +    - [ ] Create the target branch (`tor-browser-...-2`)
    
    65
    +    - [ ] Cherry-pick commits until `tor-browser-...-1-build1`
    
    66
    +    - [ ] Squash (`git rebase --autosquash FIREFOX_...`)
    
    67
    +    - [ ] Cherry-pick the remaining commits
    
    68
    +    - [ ] Reorder commits
    
    69
    +    - Merge
    
    70
    +      - [ ] Perform a self-review (`git range-diff` + diff of diffs)
    
    71
    +      - [ ] Run linters
    
    72
    +      - [ ] Build and test
    
    73
    +        - [ ] Desktop
    
    74
    +        - [ ] Android
    
    75
    +      - [ ] File a merge request
    
    76
    +    - Tag and update the repository
    
    77
    +      - [ ] `tor-browser-...-2-build1`
    
    78
    +      - [ ] `base-browser-...-2-build1`
    
    79
    +      - [ ] Make `tor-browser-...-2` the default branch
    
    80
    +
    
    81
    +- Rebase Mullvad Browser
    
    82
    +  - Prepare the rebase
    
    83
    +    - [ ] Push the `base-browser-*` tag
    
    84
    +    - [ ] Freeze the current default branch
    
    85
    +    - [ ] Create the target branch (`mullvad-browser-...-1`)
    
    86
    +  - Do the rebase
    
    87
    +    - [ ] Cherry-pick commits until `mullvad-browser-...-build1`
    
    88
    +    - [ ] Squash (`git rebase --autosquash base-browser-...-build1`)
    
    89
    +    - [ ] Cherry-pick the remaining commits
    
    90
    +    - [ ] Reorder commits
    
    91
    +  - Merge
    
    92
    +    - [ ] Perform a self-review  (`git range-diff` + diff of diffs)
    
    93
    +    - [ ] Run linters
    
    94
    +    - [ ] File a merge request
    
    95
    +  - [ ] Tag and update the repository
    
    96
    +    - [ ] Tag `mullvad-browser-...-build1`
    
    97
    +    - [ ] Make `mullvad-browser-...-2` the default branch
    
    153 98
     
    
    154 99
     ---
    
    155 100
     
    

  • .gitlab/issue_templates/061 Rebase - Stable.md
    1 1
     # ⤵️ Rebase Stable
    
    2 2
     
    
    3
    -**NOTE:** All examples in this template reference the rebase from 102.7.0esr to 102.8.0esr
    
    4
    -
    
    5
    -<details>
    
    6
    -  <summary>Explanation of Variables</summary>
    
    7
    -
    
    8
    -- `$(ESR_VERSION)`: the Mozilla defined ESR version, used in various places for building tor-browser tags, labels, etc
    
    9
    -  - **Example**: `102.8.0`
    
    10
    -- `$(ESR_TAG)`: the Mozilla defined hg (Mercurial) tag associated with `$(ESR_VERSION)`
    
    11
    -  - **Example**: `FIREFOX_102_8_0esr_RELEASE`
    
    12
    -- `$(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)
    
    13
    -  - **Example**: `FIREFOX_102_7_0esr_BUILD1`
    
    14
    -- `$(BROWSER_MAJOR)`: the browser major version
    
    15
    -  - **Example**: `12`
    
    16
    -- `$(BROWSER_MINOR)`: the browser minor version
    
    17
    -  - **Example**: either `0` or `5`; Alpha's is always `(Stable + 5) % 10`
    
    18
    -- `$(BASE_BROWSER_BRANCH)`: the full name of the current `base-browser` branch
    
    19
    -  - **Example**: `base-browser-102.8.0esr-12.0-1`
    
    20
    -- `$(BASE_BROWSER_BRANCH_PREV)`: the full name of the previous `base-browser` branch
    
    21
    -  - **Example**: `base-browser-102.7.0esr-12.0-1`
    
    22
    -- `$(TOR_BROWSER_BRANCH)`: the full name of the current `tor-browser` branch
    
    23
    -  - **Example**: `tor-browser-102.8.0esr-12.0-1`
    
    24
    -- `$(TOR_BROWSER_BRANCH_PREV)`: the full name of the previous `tor-browser` branch
    
    25
    -  - **Example**: `tor-browser-102.7.0esr-12.0-1`
    
    26
    -</details>
    
    27
    -
    
    28
    -### **Bookkeeping**
    
    3
    +## **Bookkeeping**
    
    29 4
     
    
    30 5
     - [ ] 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=Apps%3A%3AType%3A%3AReleasePreparation) issue.
    
    31 6
     
    
    32
    -### Update Branch Protection Rules
    
    33
    -
    
    34
    -- [ ] In [Repository Settings](https://gitlab.torproject.org/tpo/applications/tor-browser/-/settings/repository):
    
    35
    -  - [ ] Remove previous stable `base-browser` and `tor-browser` branch protection rules (this will prevent pushing new changes to the branches being rebased)
    
    36
    -  - [ ] Create new `base-browser` and `tor-browser` branch protection rule:
    
    37
    -    - **Branch**: `(tor|base)-browser-$(ESR_VERSION)esr-$(BROWSER_MAJOR).$(BROWSER_MINOR)-1*`
    
    38
    -      - **Example**: `(tor|base)-browser-102.8.0esr-12.0-1*`
    
    39
    -    - **Allowed to merge**: `Maintainers`
    
    40
    -    - **Allowed to push and merge**: `Maintainers`
    
    41
    -    - **Allowed to force push**: `false`
    
    42
    -
    
    43
    -### **Identify the Firefox Tagged Commit and Create New Branches**
    
    44
    -
    
    45
    -- [ ] Fetch Mozilla's firefox repo and identify this release's ${ESR_TAG}
    
    46
    -- [ ] Create new stable `base-browser` branch from tag
    
    47
    -  - Branch name in the form: `base-browser-$(ESR_VERSION)esr-$(BROWSER_MAJOR).$(BROWSER_MINOR)-1`
    
    48
    -  - **Example**: `base-browser-102.8.0esr-12.0-1`
    
    49
    -- [ ] Create new stable `tor-browser` branch from
    
    50
    -  - Branch name in the form: `tor-browser-$(ESR_VERSION)esr-$(BROWSER_MAJOR).$(BROWSER_MINOR)-1`
    
    51
    -  - **Example**: `tor-browser-102.8.0esr-12.0-1`
    
    52
    -- [ ] Push new `base-browser` branch to `upstream`
    
    53
    -- [ ] Push new `tor-browser` branch to `upstream`
    
    54
    -- [ ] Push new `$(ESR_TAG)` to `upstream`
    
    55
    -
    
    56
    -### **Rebase tor-browser**
    
    57
    -
    
    58
    -- [ ] Checkout a new local branch for the `tor-browser` rebase
    
    59
    -  - **Example**: `git branch tor-browser-rebase FIREFOX_102_8_0esr_BUILD1`
    
    60
    -- [ ] **(Optional)** `base-browser` rebase
    
    61
    -  - **NOTE** This step may be skipped if the `HEAD` of the previous `base-browser` branch is a `-buildN` tag
    
    62
    -  - [ ] Cherry-pick the previous `base-browser` commits up to `base-browser`'s `buildN` tag onto new `base-browser` rebase branch
    
    63
    -    - **Example**: `git cherry-pick FIREFOX_102_7_0esr_BUILD1..base-browser-102.7.0esr-12.0-1-build1`
    
    64
    -  - [ ] Rebase and autosquash these cherry-picked commits
    
    65
    -    - **Example**: `git rebase --autosquash --interactive FIREFOX_102_8_0esr_BUILD1 HEAD`
    
    66
    -  - [ ] Cherry-pick remainder of patches after the `buildN` tag
    
    67
    -    - **Example**: `git cherry-pick base-browser-102.7.0esr-12.0-1-build1..upstream/base-browser-102.7.0esr-12.0-1`
    
    68
    -- [ ] `tor-browser` rebase
    
    69
    -  - [ ] Note the current git hash of `HEAD` for `tor-browser` rebase+autosquash step: `git rev-parse HEAD`
    
    70
    -  - [ ] Cherry-pick the appropriate previous `tor-browser` branch's commit range up to the last `tor-browser` `buildN` tag
    
    71
    -    - **Example**: `git cherry-pick base-browser-102.7.0esr-12.0-1-build1..tor-browser-102.7.0esr-12.0-1-build1`
    
    72
    -    - **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`
    
    73
    -  - [ ] Rebase and autosquash these newly cherry-picked commits: `git rebase --autosquash --interactive $(PREV_HEAD)`
    
    74
    -     - **Example**: `git rebase --autosquash --interactive FIREFOX_102_8_0esr_RELEASE`
    
    75
    -  - [ ] Cherry-pick remainder of patches after the last `tor-browser` `buildN` tag
    
    76
    -    - **Example**: `git cherry-pick tor-browser-102.7.0esr-12.0-1-build1..upstream/tor-browser-102.7.0esr-12.0-1`
    
    77
    -  - [ ] Rebase and `pick` new security backport patches to the end of the **MOZILLA BACKPORTS** section of the commit history
    
    78
    -    - **Example**: `git rebase --interactive FIREFOX_102_8_0esr_RELEASE`
    
    79
    -  - [ ] 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.
    
    80
    -    - **Example**: `git rebase --autosquash --interactive FIREFOX_102_8_0esr_RELEASE`
    
    81
    -- [ ] Compare patch sets to ensure nothing *weird* happened during conflict resolution:
    
    82
    -  - [ ] diff of diffs:
    
    83
    -    -  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 -
    
    84
    -    - `git diff $(ESR_TAG_PREV)..$(BROWSER_BRANCH_PREV) > current_patchset.diff`
    
    85
    -    - `git diff $(ESR_TAG)..$(BROWSER_BRANCH) > rebased_patchset.diff`
    
    86
    -    - diff `current_patchset.diff` and `rebased_patchset.diff`
    
    87
    -      - 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 `tor-browser` branch)
    
    88
    -  - [ ] rangediff: `git range-diff $(ESR_TAG_PREV)..$(TOR_BROWSER_BRANCH_PREV) $(ESR_TAG)..HEAD`
    
    89
    -    - **Example**: `git range-dif FIREFOX_102_7_0esr_BUILD1..upstream/tor-browser-102.7.0esr-12.0-1 FIREFOX_102_8_0esr_BUILD1..HEAD`
    
    90
    -- [ ] Open MR for the `tor-browser` rebase
    
    91
    -- [ ] Merge
    
    92
    -- Update and push `base-browser` branch
    
    93
    -  - [ ] Reset the new `base-browser` branch to the appropriate commit in this new `tor-browser` branch
    
    94
    -  - [ ] Push these commits to `upstream`
    
    95
    -
    
    96
    -### **Sign and Tag**
    
    97
    -
    
    98
    -- [ ] Sign/Tag `HEAD` of the merged `tor-browser` branch:
    
    99
    -  - In **tor-browser.git**, checkout the new stable `tor-browser` branch
    
    100
    -  - In **tor-browser-build.git**, run signing script:
    
    101
    -    ```bash
    
    102
    -    ./tools/browser/sign-tag.torbrowser stable build1
    
    103
    -    ```
    
    104
    -  - [ ] Push tag to `upstream`
    
    105
    -- [ ] Sign/Tag HEAD of the merged `base-browser` branch:
    
    106
    -  - In **tor-browser.git**, checkout the new stable `base-browser` branch
    
    107
    -  - In **tor-browser-build.git**, run signing script:
    
    108
    -    ```bash
    
    109
    -    ./tools/browser/sign-tag.basebrowser stable build1
    
    110
    -    ```
    
    111
    -  - [ ] Push tag to `upstream`
    
    112
    -
    
    113
    -<!-- Do not edit beneath this line <3 -->
    
    7
    +## **Rebase**
    
    8
    +
    
    9
    +The step-by-step rebase process is detailed on the [Rebase Process](https://gitlab.torproject.org/tpo/applications/wiki/-/wikis/Development-Information/Rebase/Rebase-Process) wiki page. Refer to it for detailed instructions on how to perform each step.
    
    10
    +
    
    11
    +- Rebase Tor Browser
    
    12
    +  - Prepare the rebase
    
    13
    +    - [ ] Get the Firefox tag
    
    14
    +    - [ ] Freeze the current default branch
    
    15
    +    - [ ] Create the target branch
    
    16
    +  - Do the rebase
    
    17
    +    - [ ] Cherry-pick commits until `tor-browser-...-build1`
    
    18
    +    - [ ] Squash (`git rebase --autosquash FIREFOX_...-build1`)
    
    19
    +    - [ ] Cherry-pick the remaining commits
    
    20
    +    - [ ] Reorder commits
    
    21
    +  - Merge
    
    22
    +    - [ ] Perform a self-review  (`git range-diff` + diff of diffs)
    
    23
    +    - [ ] Run linters
    
    24
    +  - Tag
    
    25
    +    - [ ] `tor-browser-...-build1`
    
    26
    +    - [ ] `base-browser-...-build1`
    
    27
    +
    
    28
    +- Rebase Mullvad Browser
    
    29
    +  - Prepare the rebase
    
    30
    +    - [ ] Push the `base-browser-*` tag
    
    31
    +  - Do the rebase
    
    32
    +    - [ ] Cherry-pick commits until `mullvad-browser-...-build1`
    
    33
    +    - [ ] Squash (`git rebase --autosquash base-browser-...-build1`)
    
    34
    +    - [ ] Cherry-pick the remaining commits
    
    35
    +    - [ ] Reorder commits
    
    36
    +  - Merge
    
    37
    +    - [ ] Perform a self-review  (`git range-diff` + diff of diffs)
    
    38
    +    - [ ] Run linters
    
    39
    +  - Tag
    
    40
    +    - [ ] `mullvad-browser-...-build1`
    
    114 41
     
    
    115 42
     ---
    
    116 43
     
    

  • .gitlab/issue_templates/062 Rebase - Legacy.md deleted
    1
    -# ⤵️ Rebase Legacy
    
    2
    -
    
    3
    -**NOTE:** All examples in this template reference the rebase from 115.17.0esr to 115.18.0esr
    
    4
    -
    
    5
    -<details>
    
    6
    -  <summary>Explanation of Variables</summary>
    
    7
    -
    
    8
    -- `$(ESR_VERSION)`: the Mozilla defined ESR version, used in various places for building tor-browser tags, labels, etc
    
    9
    -  - **Example**: `115.18.0`
    
    10
    -- `$(ESR_TAG)`: the Mozilla defined hg (Mercurial) tag associated with `$(ESR_VERSION)`
    
    11
    -  - **Example**: `FIREFOX_115_18_0esr_BUILD1`
    
    12
    -- `$(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)
    
    13
    -  - **Example**: `FIREFOX_115_17_0esr_BUILD1`
    
    14
    -- `$(BASE_BROWSER_BRANCH)`: the full name of the current `base-browser` branch
    
    15
    -  - **Example**: `base-browser-115.18.0esr-13.5-1`
    
    16
    -- `$(BASE_BROWSER_BRANCH_PREV)`: the full name of the previous `base-browser` branch
    
    17
    -  - **Example**: `base-browser-115.17.0esr-13.5-1`
    
    18
    -- `$(TOR_BROWSER_BRANCH)`: the full name of the current `tor-browser` branch
    
    19
    -  - **Example**: `tor-browser-115.18.0esr-13.5-1`
    
    20
    -- `$(TOR_BROWSER_BRANCH_PREV)`: the full name of the previous `tor-browser` branch
    
    21
    -  - **Example**: `tor-browser-115.17.0esr-13.5-1`
    
    22
    -</details>
    
    23
    -
    
    24
    -### **Bookkeeping**
    
    25
    -
    
    26
    -- [ ] 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=Apps%3A%3AType%3A%3AReleasePreparation) issue.
    
    27
    -
    
    28
    -### Update Branch Protection Rules
    
    29
    -
    
    30
    -- [ ] In [Repository Settings](https://gitlab.torproject.org/tpo/applications/tor-browser/-/settings/repository):
    
    31
    -  - [ ] Remove previous legacy `base-browser` and `tor-browser` branch protection rules (this will prevent pushing new changes to the branches being rebased)
    
    32
    -  - [ ] Create new `tor-browser` branch protection rule:
    
    33
    -    - **Branch**: `tor-browser-$(ESR_VERSION)esr-13.5-1*`
    
    34
    -      - **Example**: `tor-browser-115.18.0esr-13.5-1*`
    
    35
    -    - **Allowed to merge**: `Maintainers`
    
    36
    -    - **Allowed to push and merge**: `Maintainers`
    
    37
    -    - **Allowed to force push**: `false`
    
    38
    -
    
    39
    -### **Identify the Firefox Tagged Commit and Create New Branches**
    
    40
    -
    
    41
    -- [ ] Fetch Mozilla's firefox repo and identify this release's ESR-115 ${ESR_TAG}
    
    42
    -- [ ] Create new legacy `tor-browser` branch from
    
    43
    -  - Branch name in the form: `tor-browser-$(ESR_VERSION)esr-13.5-1`
    
    44
    -  - **Example**: `tor-browser-115.18.0esr-13.5-1`
    
    45
    -- [ ] Push new `tor-browser` branch to `upstream`
    
    46
    -- [ ] Push new `$(ESR_TAG)` to `upstream`
    
    47
    -
    
    48
    -### **Rebase tor-browser**
    
    49
    -
    
    50
    -- [ ] Checkout a new local branch for the `tor-browser` rebase
    
    51
    -  - **Example**: `git branch tor-browser-rebase FIREFOX_115_18_0esr_BUILD1`
    
    52
    -- [ ] `tor-browser` rebase
    
    53
    -  - [ ] Note the current git hash of `HEAD` for `tor-browser` rebase+autosquash step: `git rev-parse HEAD`
    
    54
    -  - [ ] Cherry-pick the appropriate previous `tor-browser` branch's commit range up to the last `tor-browser` `build1` tag
    
    55
    -    - **Example**: `git cherry-pick FIREFOX_115_17_0esr_BUILD1..tor-browser-115.17.0esr-13.5-1-build2`
    
    56
    -  - [ ] Rebase and autosquash these newly cherry-picked commits: `git rebase --autosquash --interactive $(PREV_HEAD)`
    
    57
    -     - **Example**: `git rebase --autosquash --interactive FIREFOX_115_18_0esr_BUILD1`
    
    58
    -  - [ ] Cherry-pick remainder of patches after the last `tor-browser` `build1` tag
    
    59
    -    - **Example**: `git cherry-pick tor-browser-115.17.0esr-13.5-1-build1..upstream/tor-browser-115.17.0esr-13.5-1`
    
    60
    -  - [ ] Rebase and `pick` new security backport patches to the end of the **MOZILLA BACKPORTS** section of the commit history
    
    61
    -    - **Example**: `git rebase --interactive FIREFOX_115_18_0esr_BUILD1`
    
    62
    -  - [ ] 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.
    
    63
    -    - **Example**: `git rebase --autosquash --interactive FIREFOX_115_18_0esr_BUILD1`
    
    64
    -- [ ] Compare patch sets to ensure nothing *weird* happened during conflict resolution:
    
    65
    -  - [ ] diff of diffs:
    
    66
    -    -  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 -
    
    67
    -    - `git diff $(ESR_TAG_PREV)..$(BROWSER_BRANCH_PREV) > current_patchset.diff`
    
    68
    -    - `git diff $(ESR_TAG)..$(BROWSER_BRANCH) > rebased_patchset.diff`
    
    69
    -    - diff `current_patchset.diff` and `rebased_patchset.diff`
    
    70
    -      - If everything went correctly, the only lines which should differ should be the lines starting with `index abc123...def456`
    
    71
    -  - [ ] rangediff: `git range-diff $(ESR_TAG_PREV)..$(TOR_BROWSER_BRANCH_PREV) $(ESR_TAG)..HEAD`
    
    72
    -    - **Example**: `git range-dif FIREFOX_115_17_0esr_BUILD1..upstream/tor-browser-115.17.0esr-13.5-1 FIREFOX_115_18_0esr_BUILD1..HEAD`
    
    73
    -- [ ] Open MR for the `tor-browser` rebase
    
    74
    -- [ ] Merge
    
    75
    -
    
    76
    -### **Sign and Tag**
    
    77
    -
    
    78
    -- [ ] Sign/Tag `HEAD` of the merged `tor-browser` branch:
    
    79
    -  - In **tor-browser.git**, checkout the new legacy `tor-browser` branch
    
    80
    -  - In **tor-browser-build.git**, run signing script:
    
    81
    -    ```bash
    
    82
    -    ./tools/browser/sign-tag.torbrowser legacy build1
    
    83
    -    ```
    
    84
    -  - [ ] Push tag to `upstream`
    
    85
    -
    
    86
    -<!-- Do not edit beneath this line <3 -->
    
    87
    -
    
    88
    ----
    
    89
    -
    
    90
    -/label ~"Apps::Product::TorBrowser"
    
    91
    -/label ~"Apps::Type::Rebase"
    
    92
    -/label ~"Apps::Impact::High"
    
    93
    -/label ~"Priority::Blocker"

  • .gitlab/issue_templates/063 Rebase - Rapid.md deleted
    1
    -# ⤵️ Rebase Rapid
    
    2
    -
    
    3
    -- **NOTE**: All examples in this template reference the rebase from Firefox 129.0a1 to 130.0a1
    
    4
    -- **TODO**:
    
    5
    -  - Documentation step for any difficulties or noteworthy things for each rapid rebase
    
    6
    -
    
    7
    -<details>
    
    8
    -  <summary>Explanation of Channels</summary>
    
    9
    -
    
    10
    -  There are unfortunately some collisions between how we and Mozilla name our release channels which can make things confusing:
    
    11
    -  - **Firefox**:
    
    12
    -    - **Nightly**: \_START and \_END tags, version in the format `$(MAJOR).$(MINOR)a1`
    
    13
    -      - **Example**: Firefox Nightly 130 was `130.0a1`
    
    14
    -      - **Note**: Nightly is 2 major versions ahead of the current Release
    
    15
    -    - **Beta**: tagged each Monday, Wednesday, and Friday until release, version in the format `$(MAJOR).$(MINOR)b$(PATCH)`
    
    16
    -      - **Example**: the first Firefox Beta 130 was `130.0b1`
    
    17
    -      - **Note**: Beta is 1 major version ahead of the current Release, should be irrelevant to us
    
    18
    -    - **Release**: tagged monthly, version in the format `$(MAJOR).$(MINOR)` or `$(MAJOR).$(MINOR).$(PATCH)`
    
    19
    -      - **Example** Firefox Release 130 was `130.0`
    
    20
    -    - **ESR**: tagged monthly, version in the format `$(ESR_MAJOR).$(ESR_MINOR).$(ESR_PATCH)esr`
    
    21
    -      - **Example**: Firefox ESR 128.1 is `128.1.0esr`
    
    22
    -  - **Tor+Mullvad Browser**:
    
    23
    -    - **Rapid**: tagged monthly, based on the latest Firefox Nightly
    
    24
    -    - **Nightly**: not tagged, built nightly from our current Alpha branch's `HEAD`
    
    25
    -    - **Alpha**: tagged monthly, based on the latest Firefox ESR
    
    26
    -    - **Stable**: tagged monthly, based on oldest supported Firefox ESR
    
    27
    -
    
    28
    -</details>
    
    29
    -
    
    30
    -<details>
    
    31
    -  <summary>Branching Overview</summary>
    
    32
    -
    
    33
    -  Rebasing Tor Browser Rapid onto the current Firefox Nightly is a bit more confusing/involved than rebasing Tor Browser Alpha or Stable from one minor ESR to the next minor ESR.
    
    34
    -
    
    35
    -  The general process basically involves rebasing the previous Firefox Nightly-based Tor Browser Rapid onto the latest Firefox Nightly, and then cherry-picking all of the commits from the previous Firefox ESR-based Tor Browser Alpha after that channel's `build1` tag. This process presumes that the previous Tor Browser Alpha branch is locked and receiving no more changes.
    
    36
    -
    
    37
    -  This diagram provides a high-level view of the overall code-flow for rebasing/cherry-picking commits from Tor Browser Alpha based on Firefox 128.1.0esr and Tor Browser Rapid based on Firefox 129.0a1 onto Firefox 130.0a1:
    
    38
    -
    
    39
    -  ```mermaid
    
    40
    -%%{init: { 'themeVariables': {'git0': '#0072b2', 'gitBranchLabel0': '#fff', 'git1': "#e69f00", 'gitBranchLabel1': '#fff', 'git2': '#009e73', 'gitBranchLabel2': '#fff', 'git3': '#cc79a7', 'gitBranchLabel3': '#fff'}, 'gitGraph': {'mainBranchName': 'tor-browser-128.1.0esr-14.5-1'}} }%%
    
    41
    -gitGraph:
    
    42
    -    branch tor-browser-129.0a1-15.0-2
    
    43
    -    branch tor-browser-130.0a1-15.0-1
    
    44
    -    branch tor-browser-130.0a1-15.0-2
    
    45
    -
    
    46
    -    checkout tor-browser-128.1.0esr-14.5-1
    
    47
    -    commit id: "FIREFOX_128_1_0esr_BUILD1"
    
    48
    -    commit id: "base-browser-128.1.0esr-14.5-1-build1"
    
    49
    -    commit id: "tor-browser-128.1.0esr-14.5-1-build1"
    
    50
    -    commit id: "tor-browser-128.1.0esr-14.5-1-build2"
    
    51
    -
    
    52
    -    checkout tor-browser-129.0a1-15.0-2
    
    53
    -    commit id: "FIREFOX_NIGHTLY_129_END"
    
    54
    -    %% commit id: "tor-browser-129.0a1-15.0-2-build1"
    
    55
    -
    
    56
    -    checkout tor-browser-130.0a1-15.0-1
    
    57
    -    commit id: "FIREFOX_NIGHTLY_130_END"
    
    58
    -
    
    59
    -    checkout tor-browser-130.0a1-15.0-2
    
    60
    -    commit id: "FIREFOX_NIGHTLY_130_END "
    
    61
    -
    
    62
    -    checkout tor-browser-130.0a1-15.0-1
    
    63
    -    merge tor-browser-129.0a1-15.0-2
    
    64
    -
    
    65
    -    checkout tor-browser-130.0a1-15.0-2
    
    66
    -    merge tor-browser-130.0a1-15.0-1
    
    67
    -
    
    68
    -
    
    69
    -    checkout tor-browser-129.0a1-15.0-2
    
    70
    -    commit id: "tor-browser-129.0a1-15.0-2-build1"
    
    71
    -
    
    72
    -    checkout tor-browser-130.0a1-15.0-1
    
    73
    -    merge tor-browser-129.0a1-15.0-2 id: "tor-browser-130.0a1-15.0-1-build1"
    
    74
    -
    
    75
    -    checkout tor-browser-130.0a1-15.0-2
    
    76
    -    merge tor-browser-130.0a1-15.0-1
    
    77
    -
    
    78
    -    checkout tor-browser-130.0a1-15.0-1
    
    79
    -    merge tor-browser-128.1.0esr-14.5-1
    
    80
    -
    
    81
    -    checkout tor-browser-130.0a1-15.0-2
    
    82
    -    merge tor-browser-130.0a1-15.0-1
    
    83
    -
    
    84
    -    checkout tor-browser-128.1.0esr-14.5-1
    
    85
    -    commit id: "tor-browser-128.1.0esr-14.5-1"
    
    86
    -
    
    87
    -    checkout tor-browser-130.0a1-15.0-1
    
    88
    -    merge tor-browser-128.1.0esr-14.5-1 id:"tor-browser-130.0a1-15.0-1-build2"
    
    89
    -
    
    90
    -    checkout tor-browser-130.0a1-15.0-2
    
    91
    -
    
    92
    -    merge tor-browser-130.0a1-15.0-1
    
    93
    -    commit id: "tor-browser-130.0a1-15.0-2-build1"
    
    94
    -
    
    95
    -  ```
    
    96
    -
    
    97
    -  In this concrete example, the rebaser performs the following steps:
    
    98
    -  - create new `tor-browser-130.0a1-15.0-1`, and `tor-browser-130.0a1-15.0-2` branches from the `FIREFOX_NIGHTLY_130_END` tag.
    
    99
    -    - these will be the rebase review branches
    
    100
    -  - onto `tor-browser-130.0a1-15.0-1`, cherry-pick the range `FIREFOX_NIGHTLY_129_END..tor-browser-129.0a1-15.0-2-build1` (i.e. the Firefox Nightly 129-based Tor Browser Rapid commits)
    
    101
    -    - this updates the previous Tor Browser Rapid onto Firefox Nightly 130
    
    102
    -  - cherry-pick the new alpha patches onto `tor-browser-130.0a1-15.0-1` (i.e. cherry-pick `tor-browser-128.1.0esr-14.5-1-build2..origin/tor-browser-128.1.0esr-14.5-1`)
    
    103
    -  - onto `tor-browser-130.0a1-15.0-2`, rebase and autosquash the `FIREFOX_NIGHTLY_130_END..tor-browser-130.0a1-15.0-2-build1` commit range
    
    104
    -  - onto `tor-browser-130.0a1-15.0-2`, cherry-pick the remaining commit range `tor-browser-130.0a1-15.0-2-build1..origin/tor-browser-130.0a1-15.0-2`
    
    105
    -  - re-order any remaining fixup! commits to be adjacent to their parents (i.e. the same rebase command queue as one would get from `git rebase --autosquash`, but with the `fixup!` commands replaced with `pick!` commands).
    
    106
    -    - this re-organises the branch in a nicely-bisectable way, and will ensure the rebase+autosquash step for the next release *should* succeed without any additional effort
    
    107
    -
    
    108
    -</details>
    
    109
    -
    
    110
    -<details>
    
    111
    -  <summary>Explanation of Variables</summary>
    
    112
    -
    
    113
    -- `$(NIGHTLY_VERSION)`: the Mozilla defined nightly version, used in various places for building tor-browser tags, labels, etc
    
    114
    -  - **Example**: `130.0a1`
    
    115
    -- `$(NIGHTLY_TAG)`: the Mozilla defined hg (Mercurial) tag associated with `$(NIGHTLY_VERSION)`
    
    116
    -  - **Example**: `FIREFOX_NIGHTLY_130_END`
    
    117
    -- `$(NIGHTLY_TAG_PREV)`: the Mozilla defined hg (Mercurial) tag associated with the previous nightly version when rebasing (ie, the nightly version we are rebasing from)
    
    118
    -  - **Example**: `FIREFOX_NIGHTLY_129_END`
    
    119
    -- `$(BROWSER_VERSION)`: the browser version which will first be based on the next major ESR version this *Firefox* Nightly series is leading up to
    
    120
    -  - **Example**: `15`
    
    121
    -- `$(TOR_BROWSER_BRANCH)`: the full name of the current `tor-browser` branch based off of the Firefox Nightly channel
    
    122
    -  - **Example**: `tor-browser-130.0a1-15.0-1`
    
    123
    -- `$(TOR_BROWSER_BRANCH_PREV)`: the full name of the previous `tor-browser` branch based off of the Firefox Nightly channel
    
    124
    -  - **Example**: `tor-browser-129.0a1-15.0-1`
    
    125
    -</details>
    
    126
    -
    
    127
    -### Update Branch Protection Rules
    
    128
    -
    
    129
    -- [ ] In [Repository Settings](https://gitlab.torproject.org/tpo/applications/tor-browser/-/settings/repository):
    
    130
    -  - [ ] Remove previous nightly `tor-browser` branch protection rules (this will prevent pushing new changes to the branches being rebased)
    
    131
    -  - [ ] Create new `base-browser` and `tor-browser` branch protection rule:
    
    132
    -    - **Branch**: `(tor|base)-browser-$(NIGHTLY_VERSION)-$(BROWSER_VERSION)-*`
    
    133
    -      - **Example**: `(tor|base)-browser-130.0a1-15.0-*`
    
    134
    -    - **Allowed to merge**: `Maintainers`
    
    135
    -    - **Allowed to push and merge**: `Maintainers`
    
    136
    -    - **Allowed to force push**: `false`
    
    137
    -    - ⚠️ **IMPORTANT**: If you copied and pasted from old rules, double check you didn't add spaces at the end, as GitLab will not trim them!
    
    138
    -
    
    139
    -### **Create New Branches**
    
    140
    -
    
    141
    -- [ ] Fetch Mozilla's firefox repo and identify this release's ${NIGHTLY_TAG}
    
    142
    -- [ ] Create two new rapid `tor-browser` branches from Firefox ${NIGHTLY_TAG}
    
    143
    -  - Branch name in the form: `tor-browser-$(NIGHTLY_VERSION)-$(BROWSER_VERSION)-${BRANCH_NUM}`
    
    144
    -  - **Example**: `tor-browser-130.0a1-15.0-1` and `tor-browser-130.0a1-15.0-2`
    
    145
    -- [ ] Push new `tor-browser` branches and the `firefox` tag to `upstream`
    
    146
    -
    
    147
    -### **Rebase previous `-2` rapid branch's HEAD onto current `-1` rapid branch**
    
    148
    -
    
    149
    -- **Desired outcome**:
    
    150
    -  - An easy to review branch with the previous rapid branch rebased onto the latest Firefox Nighty tag
    
    151
    -  - It must be possible to run `git range-diff` between the previous `-2` and the new branch
    
    152
    -    - We want to see only the effects of the rebase
    
    153
    -    - No autosquash should happen at this point
    
    154
    -  - **Expected difficulties**:
    
    155
    -    - Conflicts with upstream developments
    
    156
    -    - Sometimes it will be hard to keep a feature working. It's fine to drop it, and create an issue to restore it after a deeper investigation.
    
    157
    -- [ ] Checkout a new local branch for the first part of the `-1` rebase
    
    158
    -  - **Example**: `git checkout -b rapid-rebase-part1 origin/tor-browser-130.0a1-15.0-1`
    
    159
    -- [ ] Firefox Nightly-based `tor-browser` rebase:
    
    160
    -  - [ ] cherry-pick previous Tor Browser Rapid `-2` branch to new `-1` rebase branch
    
    161
    -    - **Example**: `git cherry-pick FIREFOX_NIGHTLY_129_END..origin/tor-browser-129.0a1-15.0-2`
    
    162
    -- [ ] Rebase Verification:
    
    163
    -    - [ ] Clean range-diff between the previous rapid branch and current rebase branch
    
    164
    -      - **Example**:
    
    165
    -        ```bash
    
    166
    -        git range-diff FIREFOX_NIGHTLY_129_END..origin/tor-browser-129.0a1-15.0-2 FIREFOX_NIGHTLY_130_END..rapid-rebase-part1
    
    167
    -        ```
    
    168
    -    - [ ] Optional: clean diff of diffs between previous rapid branch and current rebase branch
    
    169
    -      - **Example**:
    
    170
    -        ```bash
    
    171
    -        git diff FIREFOX_NIGHTLY_129_END origin/tor-browser-129.0a1-15.0-2 > 129.diff
    
    172
    -        git diff FIREFOX_NIGHTLY_130_END HEAD > 130.diff
    
    173
    -        # A two-column diff tool is suggested rather than plain-diff, e.g., meld on Linux.
    
    174
    -        meld 129.diff 130.diff
    
    175
    -        ```
    
    176
    -      - **Note**: Only differences should be due to resolving merge conflicts with upstream changes from Firefox Nightly
    
    177
    -- [ ] Open MR
    
    178
    -- [ ] Merge
    
    179
    -- [ ] Sign/Tag `HEAD` of the merged `tor-browser` branch:
    
    180
    -  - In **tor-browser.git**, checkout the `-1` rapid `tor-browser` branch
    
    181
    -  - In **tor-browser-build.git**, run signing script:
    
    182
    -    ```bash
    
    183
    -    ./tools/browser/sign-tag.torbrowser rapid build1
    
    184
    -    ```
    
    185
    -  - [ ] Push tag to `upstream`
    
    186
    -
    
    187
    -### **Port new alpha patches to `-1`**
    
    188
    -
    
    189
    -- **Desired outcome**:
    
    190
    -  - The previous release-cycle's new alpha patches cherry-picked to the end of the current nightly
    
    191
    -  - It must be possible to run `git range-diff ESR-build1..ESR NIGHTLY-build1..`
    
    192
    -  - **Expected difficulties**:
    
    193
    -    - Conflicts with upstream developments (similar to the previous part)
    
    194
    -    - The range might contain cherry-picked upstream commits, which will result in empty commits: it's fine to skip them
    
    195
    -  - **Note**: The Tor Browser Alpha branch should be closed at this point and not receiving any more MRs
    
    196
    -- [ ] Checkout a new local branch for the second part of the `-1` rebase
    
    197
    -  - **Example**: `git checkout -b rapid-rebase-part2 origin/tor-browser-130.0a1-15.0-1`
    
    198
    -- [ ] Cherry-pick the new `tor-browser` alpha commits (i.e. the new dangling commits which did not appear in the previous Tor Browser Alpha release):
    
    199
    -  - **Example** `git cherry-pick tor-browser-128.1.0esr-14.5-1-build1..origin/tor-browser-128.1.0esr-14.5-1`
    
    200
    -- [ ] Rebase Verification
    
    201
    -  - [ ] Clean range-diff between the alpha patch set ranges
    
    202
    -    - **Example**:
    
    203
    -      ```bash
    
    204
    -      git range-diff tor-browser-128.1.0esr-14.5-1-build1..origin/tor-browser-128.1.0esr-14.5-1 origin/tor-browser-130.0a1-15.0-1..HEAD
    
    205
    -      ```
    
    206
    -  - [ ] Clean diff of diffs between the alpha patch set ranges
    
    207
    -    - **Example**:
    
    208
    -      ```bash
    
    209
    -      git diff tor-browser-128.1.0esr-14.5-1-build1 origin/tor-browser-128.1.0esr-14.5-1 > 128.1.0esr.diff
    
    210
    -      git diff origin/tor-browser-130.0a1-15.0-1 HEAD > 130.diff
    
    211
    -      # A two-column diff tool is suggested rather than plain-diff, e.g., meld on Linux.
    
    212
    -      meld 128.1.0esr.diff 130.diff
    
    213
    -      ```
    
    214
    -    - **Note**: Only differences should be due to resolving merge conflicts with upstream changes from Firefox Nightly
    
    215
    -- [ ] Open MR
    
    216
    -- [ ] Merge
    
    217
    -- [ ] Sign/Tag `HEAD` of the merged `tor-browser` branch:
    
    218
    -  - In **tor-browser.git**, checkout the `-1` rapid `tor-browser` branch
    
    219
    -  - In **tor-browser-build.git**, run signing script:
    
    220
    -    ```bash
    
    221
    -    ./tools/browser/sign-tag.torbrowser rapid build2
    
    222
    -    ```
    
    223
    -  - [ ] Push tag to `upstream`
    
    224
    -
    
    225
    -### **Squash and Reorder tor-browser `-1` branch to new `-2` branch**
    
    226
    -- **Desired outcome**:
    
    227
    -  - The rapid branch from the previous step prepared for the next nightly
    
    228
    -  - **Rationale**:
    
    229
    -    - We squash a lot of commits. We want to keep them a little bit longer rather than squashing them immediately for troubleshooting and documentation purposes.
    
    230
    -    - Doing this as a separate pass helps to separate errors due to upstream changes from errors due to processes created by our workflow.
    
    231
    -  - **Expected difficulties**:
    
    232
    -    - our patches aren't disjoint, therefore we might have conflicts when shuffling them around.
    
    233
    -- [ ] Checkout a new local branch for the `-2` rebase, aligned to -1-build1
    
    234
    -  - **Example**: `git checkout -b rapid-rebase-part3 tor-browser-130.0a1-15.0-1-build1`
    
    235
    -- [ ] Rebase with autosquash. This step should be trivial and not involve any conflicts.
    
    236
    -  - **Example**: `git rebase -i --autosquash FIREFOX_NIGHTLY_130_END`
    
    237
    -- [ ] Cherry-pick the remaining commits
    
    238
    -  - **Example**: `git cherry-pick tor-browser-130.0a1-15.0-1-build1..upstream/tor-browser-130.0a1-15.0-1`
    
    239
    -- [ ] Create a branch for self-reviewing purposes, or take note of the current commit hash somewhere
    
    240
    -  - **Example**: `git branch rapid-rebase-part3-review`
    
    241
    -  - You do not need to publish this, and you can delete it at the end of the process (`git branch -D rapid-rebase-part3-review`)
    
    242
    -  - When you are a reviewer, it might be useful to repeat these steps locally. They should not involve mental overhead (and PieroV has a script to automate this)
    
    243
    -- [ ] Rebase and reorder commits (i.e. replace `fixup `, `fixup -C ` and `squash ` with `pick ` commands)
    
    244
    -  - Notice the space at the end, to avoid replacing `fixup!` with `pick!` in the commit subject, even though git will probably not care of such changes
    
    245
    -- [ ] Rebase Verification
    
    246
    -  - [ ] Clean range-diff between the temporary review branch and the final branch
    
    247
    -    - **Example**:
    
    248
    -      ```bash
    
    249
    -      git range-diff FIREFOX_NIGHTLY_130_END..rapid-rebase-part3-review FIREFOX_NIGHTLY_130_END..rapid-rebase-part3
    
    250
    -      ```
    
    251
    -    - If you are the reviewer, it should be trivial to create such a branch on your own, as no shuffling is involved
    
    252
    -  - [ ] Clean diff of diffs between rapid branches
    
    253
    -    - **Example**:
    
    254
    -      ```bash
    
    255
    -      git diff FIREFOX_NIGHTLY_130_END tor-browser-130.0a1-15.0-1-build2 > 130-1.diff
    
    256
    -      git diff FIREFOX_NIGHTLY_130_END HEAD > 130-2.diff
    
    257
    -      ```
    
    258
    -  - [ ] Understandable range-diff (i.e. `fixup!` patches are distributed from end of branch next to their parent)
    
    259
    -    - **Example**:
    
    260
    -      ```bash
    
    261
    -      git range-diff FIREFOX_NIGHTLY_130_END..tor-browser-130.0a1-15.0-1-build2 FIREFOX_NIGHTLY_130_END..HEAD
    
    262
    -      ```
    
    263
    -- [ ] Open MR
    
    264
    -- [ ] Merge
    
    265
    -- [ ] Sign/Tag `HEAD` of the merged `tor-browser` branch:
    
    266
    -  - In **tor-browser.git**, checkout the `-2` rapid `tor-browser` branch
    
    267
    -  - In **tor-browser-build.git**, run signing script:
    
    268
    -    ```bash
    
    269
    -    ./tools/browser/sign-tag.torbrowser rapid build1
    
    270
    -    ```
    
    271
    -  - [ ] Push tag to `upstream`
    
    272
    -
    
    273
    -### **Create and Tag base-browser `-2` branch**
    
    274
    -- [ ] Find the last commit in the merged `-2` `tor-browser` branch with a `BB XXXXX...` subject
    
    275
    -- [ ] Create new branch from this commit
    
    276
    -  - Branch name in the form: `base-browser-$(NIGHTLY_VERSION)-$(BROWSER_VERSION)-2`
    
    277
    -  - **Example**: `base-browser-130.0a1-15.0-2`
    
    278
    -- [ ] Push branch to `upstream`
    
    279
    -- [ ] Sign/Tag latest `HEAD` of the merged `base-browser` branch:
    
    280
    -  - In **tor-browser.git**, checkout the `-2` rapid `tor-browser` branch
    
    281
    -  - In **tor-browser-build.git**, run signing script:
    
    282
    -    ```bash
    
    283
    -    ./tools/browser/sign-tag.basebrowser rapid build1 ${COMMIT}
    
    284
    -    ```
    
    285
    -  - [ ] Push tag to `upstream`
    
    286
    -
    
    287
    -<!-- Do not edit beneath this line <3 -->
    
    288
    -
    
    289
    ----
    
    290
    -
    
    291
    -/label ~"Apps::Product::TorBrowser"
    
    292
    -/label ~"Apps::Type::Rebase"
    
    293
    -/label ~"Apps::Impact::High"
    
    294
    -/label ~"Priority::High"

  • .gitlab/issue_templates/Default.md
    ... ... @@ -16,10 +16,8 @@ Please select the appropriate issue template from the **Description** drop-down.
    16 16
     - 🕰️ **Time-Gated Feature** - implement a new feature which must be enabled for a particular window in time
    
    17 17
     - ⬅️ **Backport** - cherry-pick change to other release channels
    
    18 18
     -**Revert** - revert a change
    
    19
    -- ⤵️ **Rebase - Alpha** - rebase alpha to latest Firefox ESR version
    
    19
    +- ⤵️ **Rebase - Alpha** - rebase alpha to latest Firefox Nightly version
    
    20 20
     - ⤵️ **Rebase - Stable** - rebase stable to latest Firefox ESR version
    
    21
    -- ⤵️ **Rebase - Legacy** - rebase legacy to latest Firefox ESR 115 version
    
    22
    -- ⤵️ **Rebase - Rapid** - rebase rapid to latest Firefox Nightly version
    
    23 21
     - ⬆️ **Uplift** - uplift change to upstream project
    
    24 22
     - 🛡️ **Security Backports** - cherry-pick security fixes from Firefox
    
    25 23
     - 🚨 **Emergency Security Issue** - manage fixing and publishing a critical security fix
    

  • _______________________________________________
    tor-commits mailing list -- tor-commits@xxxxxxxxxxxxxxxxxxxx
    To unsubscribe send an email to tor-commits-leave@xxxxxxxxxxxxxxxxxxxx