| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 1 | # Merge Request Process |
| 2 | |
| 3 | [TOC] |
| 4 | |
| 5 | ## tl;dr |
| 6 | |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 7 | * Release managers (and delegates like the security team) must review all |
| 8 | merges made to release branches |
| 9 | * Merge criteria become more strict as the stable release date approaches; use |
| 10 | Chromium Dash's [Branches page](https://chromiumdash.appspot.com/branches) |
| 11 | to understand which branches are active and what merges are acceptable for |
| 12 | each branch |
| 13 | * Ensure your change is [safe to merge](#verifying-eligibility-and-safety) |
| 14 | before initiating the merge review process unless it's time-sensitive |
| Harry Souders | 8b7e12e8 | 2025-01-13 23:03:09 | [diff] [blame] | 15 | * Use Chromium Issue Tracker's [project queries](#monitoring-merge-requests) to |
| 16 | track your approved merges as well as your pending requests |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 17 | * Use Gerrit or git to land your merge only after it's been approved |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 18 | |
| 19 | ## Introduction |
| 20 | |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 21 | Chromium is a main-first development team; generally, all code should land on |
| 22 | main then roll out to stable users only after the milestone containing the code |
| 23 | is branched, stabilized and shipped to the stable channel (to learn more about |
| 24 | the release cycle, click |
| 25 | [here](https://chromium.googlesource.com/chromium/src.git/+/main/docs/process/release_cycle.md)). |
| 26 | This is because merging (also known as cherry-picking) code to an older release |
| 27 | branch introduces risk and costs time across the team. However, there are times |
| 28 | when the benefits outweigh the costs and a merge might be appropriate, e.g. to |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 29 | fix a web platform regression, address a crash or patch a security |
| 30 | vulnerability. |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 31 | |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 32 | To ensure we make the right decisions, release managers leverage a merge review |
| 33 | process to evaluate each request. They'll ask questions about the reason you |
| 34 | would like to merge a change and the risk of the merge itself, and you'll work |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 35 | together to make a judgement call on whether or not the merge should be approved |
| 36 | or rejected. |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 37 | |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 38 | Generally, merges follow these high-level steps: |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 39 | |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 40 | * Developers update bug with relevant details and request a merge by updating |
| 41 | the *Merge-Request* field with the requested milestones, then wait for |
| 42 | review. |
| 43 | * Release managers and automation review and approve, reject, or ask questions |
| 44 | about the merge within two business days. |
| 45 | * Developers wait for review and, if approved, land the merge ASAP. |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 46 | |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 47 | For details on each step, see below. |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 48 | |
| Amy Ressler | 373f7772 | 2024-02-03 00:39:47 | [diff] [blame] | 49 | **NOTE:** Because security issues (identified with *Type=Vulnerability*) follow |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 50 | a more complex flow, you may simply mark security issues as *Fixed* in the Issue |
| 51 | Tracker and [automation](#security-merge-triage) will handle the remainder of |
| 52 | the merge request process flow for you; simply process the merge if it is |
| 53 | requested and approved. |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 54 | |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 55 | ## Requesting a merge |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 56 | |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 57 | ### Verifying eligibility and safety |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 58 | |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 59 | Before requesting a merge, first ensure your change is a good merge candidate: |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 60 | |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 61 | * Ensure it meets the merge criteria (via |
| 62 | [Chromium Dash](https://chromiumdash.appspot.com/branches)) of the |
| 63 | branch(es) you'd like to merge to; merge criteria become more strict the |
| 64 | older the branch is, more details on criteria |
| 65 | [below](#merge-criteria-phases) |
| 66 | * Verify merging the change to an older branch would be safe, e.g. unlikely to |
| 67 | introduce new regressions, no major merge conflicts, automated test coverage |
| Wayne Jackson Jr. | 86d4fb5f | 2025-10-08 13:43:48 | [diff] [blame] | 68 | present, etc; consider adding a kill-switch & chat with your TL |
| 69 | for input if you're not sure |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 70 | * Confirm your change fixes the issue at hand, preferably by testing on and |
| 71 | monitoring the canary channel for 24 hours post-release (see |
| 72 | [Chromium Dash](https://chromiumdash.appspot.com/commits) to determine if |
| 73 | your change has shipped) |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 74 | |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 75 | * You may skip this step if a release manager or security team member has |
| 76 | told you that the merge is urgent, e.g. is actively blocking a release |
| Alex Mineer | 40d33c3 | 2018-03-15 23:45:14 | [diff] [blame] | 77 | |
| Amy Ressler | 373f7772 | 2024-02-03 00:39:47 | [diff] [blame] | 78 | ### Updating Chromium Issue Tracker |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 79 | |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 80 | Next, update the bug (generally the bug being fixed by the merge) with the |
| 81 | following information present and accurate: |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 82 | |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 83 | * Title and description clearly describing the bug being fixed |
| 84 | * Priority (*Priority*), OS (*OS*) and target milestone(s) (*Milestone*) |
| 85 | fields are set |
| Philip Rogers | 1d50df09 | 2024-07-22 13:27:28 | [diff] [blame] | 86 | * Consider all available data when setting the priority, such as existing |
| 87 | metrics for usage of a broken feature, to ensure important merges are |
| 88 | not missed. Consider collecting new data, such as by landing new metrics |
| 89 | and estimating severity with pre-stable data. For Web Platform changes, |
| Harry Souders | 8b7e12e8 | 2025-01-13 23:03:09 | [diff] [blame] | 90 | [compat |
| 91 | tools](https://www.chromium.org/blink/platform-predictability/compat-tools/) |
| Philip Rogers | 1d50df09 | 2024-07-22 13:27:28 | [diff] [blame] | 92 | such as |
| 93 | [UseCounters](https://www.chromium.org/blink/platform-predictability/compat-tools/#usecounter) |
| Harry Souders | 8b7e12e8 | 2025-01-13 23:03:09 | [diff] [blame] | 94 | , [Cluster |
| 95 | Telemetry](https://www.chromium.org/blink/platform-predictability/compat-tools/#on-demand-crawl) |
| Philip Rogers | 1d50df09 | 2024-07-22 13:27:28 | [diff] [blame] | 96 | , and |
| 97 | [HTTPArchive](https://www.chromium.org/blink/platform-predictability/compat-tools/#the-http-archive) |
| 98 | may be useful. |
| 99 | |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 100 | * Owner, generally the person requesting / performing the merge |
| 101 | * [Release block label](./release_blockers.md) if applicable (*ReleaseBlock* |
| 102 | field*) |
| 103 | * Issue status: |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 104 | |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 105 | * Fixed: You're confident the issue is fixed on main, e.g. you've locally |
| 106 | built and tested the issue, no additional crash reports are generated |
| 107 | after the fix was released, etc (most issues) |
| 108 | * In Progress (Accepted): Diagnostic merges only, e.g. to merge code to |
| 109 | track down the root cause of an issue that only exists on branch |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 110 | |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 111 | ### Setting the Merge-Request field |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 112 | |
| Amy Ressler | 373f7772 | 2024-02-03 00:39:47 | [diff] [blame] | 113 | Once you've verified all the above, you're ready to request a merge! Simply |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 114 | update the issue's *Merge-Request* field with the milestone(s) you'd like to |
| Harry Souders | 1907ad7 | 2025-01-22 17:16:03 | [diff] [blame] | 115 | merge to. Within the next ~15 minutes, automation will create a new Merge |
| 116 | Request issue, link it to the original (parent) issue, copy relevant metadata, |
| 117 | and assign the issue to you. |
| 118 | |
| Harry Souders | da1a0cd | 2025-08-13 20:47:59 | [diff] [blame] | 119 | If you don't have an existing Chromium Tracker issue, you can request a merge by |
| 120 | filling out the bug template at |
| 121 | [crbug.com/merge-request](https://crbug.com/merge-request). |
| 122 | |
| Harry Souders | 1907ad7 | 2025-01-22 17:16:03 | [diff] [blame] | 123 | ### Submitting the Merge Request |
| 124 | |
| 125 | Follow the instruction in the new Merge Request issue. You will be asked to |
| 126 | update a number of custom fields (found in the issue's sidebar) and provide a |
| 127 | rationale for the merge request. After you have updated and verified the |
| 128 | request, you can submit the request for review by assigning the issue to |
| 129 | *[email protected]*. |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 130 | |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 131 | ## Monitoring merge requests |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 132 | |
| Harry Souders | 1907ad7 | 2025-01-22 17:16:03 | [diff] [blame] | 133 | After assigning the issue to *[email protected]*, automation will evaluate |
| 134 | your request and either approve it or pass it along to a release manager for |
| 135 | manual evaluation; see [here](#merge-request-triage) to learn more about this |
| 136 | automation. If manual review is required, release managers strive to answer all |
| 137 | merge requests within two business days, but extenuating circumstances may cause |
| 138 | delays. |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 139 | |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 140 | At this point, following along via bug comments sent by email will always keep |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 141 | you in the loop, but you can also use the following queries in the Issue Tracker |
| 142 | to track your merges: |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 143 | |
| Harry Souders | 8b7e12e8 | 2025-01-13 23:03:09 | [diff] [blame] | 144 | * [Approved and TBD merges](https://issues.chromium.org/issues?q=assignee:me%20customfield1223087:(Approved%20%7C%20TBD)): |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 145 | Merges that require your follow-up, either by landing the relevant merge (if |
| 146 | approved) or determining whether or not a merge is actually required and if |
| 147 | so, requesting it (if TBD) |
| Harry Souders | 1907ad7 | 2025-01-22 17:16:03 | [diff] [blame] | 148 | * [Pending merges](https://g-issues.chromium.org/issues?q=assignee:me%20customfield1223087:Pending): |
| 149 | Merges that are pending review by automation and need additional action from |
| 150 | you. Frequently, issues remain in the state because developers have failed |
| 151 | to update the merge request issue with all required information, or the |
| 152 | request was not assigned to **[email protected]**. Please follow the |
| 153 | instructions in the issue to complete the merge request, and reach out to |
| 154 | a release manager if you have any questions. |
| Harry Souders | 8b7e12e8 | 2025-01-13 23:03:09 | [diff] [blame] | 155 | * [Requested |
| 156 | merges](https://issues.chromium.org/issues?q=assignee:me%20(-customfield1223134:none%20%7C%20customfield1223087:Review)): |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 157 | Merges that are waiting for input from release managers or automation; feel |
| 158 | free to ping bugs that sit in this queue for two business days (assuming you |
| 159 | verified that the change was already deployed to canary ahead of requesting |
| 160 | a merge) |
| Harry Souders | 8b7e12e8 | 2025-01-13 23:03:09 | [diff] [blame] | 161 | * [Rejected and NA merges](https://issues.chromium.org/issues?q=assignee:me%20customfield1223087:(Rejected%20%7C%20NA)): |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 162 | Merges that were either rejected by release managers, or not applicable to |
| 163 | be merged; generally, no action is needed for these items unless you |
| 164 | disagree with a merge's rejection and wish to escalate |
| Harry Souders | 8b7e12e8 | 2025-01-13 23:03:09 | [diff] [blame] | 165 | * [All merges](https://issues.chromium.org/issues?q=assignee:me%20(-customfield1223087:none%20%7C%20-customfield1223134:none)): |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 166 | Includes every possible merge state, useful when wanting to find an item you |
| 167 | considered for merging but can't recall the state it was last in. |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 168 | |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 169 | For a description of each label used to track the merge process, see the |
| 170 | appendix [below](#merge-states-and-labels). |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 171 | |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 172 | ## Landing an approved merge |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 173 | |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 174 | Once your merge has been approved for a given milestone (via the release manager |
| 175 | or automation updating the *Merge* field with *Approved-###*), you have two |
| 176 | options to land the merge: |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 177 | |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 178 | * Gerrit UI, easiest for clean cherry-picks or those requiring only minor |
| 179 | changes |
| 180 | * git, for more complex cherry-picks and / or when local verification may be |
| 181 | beneficial |
| Alan Cutter | e338ed9 | 2021-05-06 04:57:19 | [diff] [blame] | 182 | |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 183 | Regardless of which method you choose, please ensure you land your cherry-pick |
| 184 | ASAP so that it can be included in the next release built from the branch; if |
| 185 | you don't merge your cherry-pick soon after approval, it will eventually be |
| 186 | rejected for merge. |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 187 | |
| Harry Souders | 8b7e12e8 | 2025-01-13 23:03:09 | [diff] [blame] | 188 | **NOTE:** Ensure you link to the bug that has merge approval for the relevant |
| Ben Mason | a48d796 | 2025-02-13 16:06:47 | [diff] [blame] | 189 | milestone. Not linking to a bug that has approval can cause delay to your CL |
| 190 | landing. If the merge request is for a single change, add `Fixed: <bug number>` |
| 191 | to the change description. If the merge request is for multiple changes, add |
| 192 | `Fixed: <bug number>` to the final change description, `Bug: <bug number>` |
| 193 | to all other change descriptions. |
| Ben Mason | e8424ee2 | 2024-12-04 11:23:43 | [diff] [blame] | 194 | |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 195 | Once the cherry-pick has landed, a bot will update the *Merge* field with |
| Ben Mason | e0b0499 | 2025-03-03 19:07:35 | [diff] [blame] | 196 | *Merged-###* label. If `Fixed:` was used, the bug will be closed. |
| Ben Wagner | 96babd4c | 2022-08-26 16:53:09 | [diff] [blame] | 197 | |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 198 | ### Using Gerrit UI |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 199 | |
| David Benjamin | 58230aec | 2022-02-14 22:35:23 | [diff] [blame] | 200 | Select the "..." button in the Gerrit UI, then choose "Cherry Pick". When |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 201 | prompted for a branch, enter *refs/branch-heads/####*, where #### corresponds to |
| 202 | the release branch you are merging to (available on |
| mlcui | eaa3e395 | 2022-02-14 22:52:06 | [diff] [blame] | 203 | [Chromium Dash](https://chromiumdash.appspot.com/branches) in the "Chromium" |
| 204 | column). |
| Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 205 | |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 206 | Once the cherry-pick CL is prepared, you can bypass code review (but not OWNERS |
| 207 | approval) within 14 days of the original change by adding the Rubber Stamper bot |
| 208 | ([email protected]) as a reviewer. If the CL meets the |
| K. Moon | 216a9a119 | 2022-08-26 06:02:36 | [diff] [blame] | 209 | [Rubber Stamper criteria](https://chromium.googlesource.com/infra/infra/+/refs/heads/main/go/src/infra/appengine/rubber-stamper/README.md), |
| 210 | the bot will vote *Bot-Commit+1* to bypass code review. If the CL is marked |
| 211 | *Auto-Submit+1*, the bot will also submit the CL to the CQ on your behalf. |
| Ian Barkley-Yeung | 3af975e | 2021-04-06 19:00:35 | [diff] [blame] | 212 | |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 213 | ### Using git |
| 214 | |
| 215 | The commands below should set up your environment to be able to successfully |
| 216 | upload a cherry-pick to a release branch, where *####* corresponds to the |
| 217 | release branch you are merging to (available on |
| mlcui | eaa3e395 | 2022-02-14 22:52:06 | [diff] [blame] | 218 | [Chromium Dash](https://chromiumdash.appspot.com/branches) in the "Chromium" |
| 219 | column): |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 220 | |
| 221 | ``` |
| 222 | $ gclient sync --with_branch_heads |
| 223 | $ git fetch |
| 224 | $ git checkout -b BRANCH_NAME refs/remotes/branch-heads/#### |
| 225 | $ git cl upstream branch-heads/#### |
| 226 | $ git cherry-pick -x COMMIT_HASH_MAIN |
| Yoav Weiss | 42be043 | 2022-11-26 19:04:07 | [diff] [blame] | 227 | $ gclient sync |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 228 | ``` |
| 229 | |
| 230 | From here, your environment should be ready to adjust the change as required; |
| 231 | use ninja to build and test your changes, and when ready upload for review: |
| 232 | |
| 233 | ``` |
| 234 | $ git cl upload |
| 235 | ``` |
| 236 | |
| 237 | **Adjust the change description** to omit the "Change-Id: ..." line from |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 238 | original patch, otherwise you may experience issues when uploading the change to |
| 239 | Gerrit. Once complete, use Gerrit to initiate review and approval of the merge |
| 240 | as TBR has been discontinued. |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 241 | |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 242 | Other tips & tricks when merging with git via release branches: * Consider using |
| 243 | multiple working directories when creating the release branch * Editing the |
| 244 | change description to denote this is a merge (e.g. "Merge to release branch" at |
| 245 | the top) will help reviewers distinguish between the cherry-pick and the |
| 246 | original change |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 247 | |
| 248 | ## Merge automation |
| 249 | |
| Amy Ressler | 373f7772 | 2024-02-03 00:39:47 | [diff] [blame] | 250 | The Chrome team has built automation via |
| 251 | [Blintz](https://www.chromium.org/issue-tracking/autotriage), formerly known as |
| 252 | Sheriffbot, to assist in several merge flows: security merge triage, general |
| 253 | merge request triage, and preventing missed merges. |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 254 | |
| 255 | ### Security merge triage |
| 256 | |
| 257 | Given the additional complexity inherent in security merges, the security team |
| 258 | has built custom automation to handle this flow end to end; simply mark any |
| Harry Souders | 1907ad7 | 2025-01-22 17:16:03 | [diff] [blame] | 259 | security issue as *Fixed* and Blintz will evaluate applicable milestones, |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 260 | determine if merges are required and automatically request them if need be. |
| 261 | |
| 262 | ### Merge request triage |
| 263 | |
| Harry Souders | 1907ad7 | 2025-01-22 17:16:03 | [diff] [blame] | 264 | To reduce release manager toil, Blintz performs the first pass review of all |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 265 | merge requests; it may auto-approve the issue if it can detect the issue meets |
| 266 | the right criteria for the current merge phase (e.g. a ReleaseBlock-Dev issue |
| Harry Souders | 1907ad7 | 2025-01-22 17:16:03 | [diff] [blame] | 267 | requesting a merge before beta promotion). If it cannot decide, it will pass the |
| 268 | issue to a release manager for manual review. |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 269 | |
| Harry Souders | 1907ad7 | 2025-01-22 17:16:03 | [diff] [blame] | 270 | Blintz only takes action on merge requests when the merge request issue (not the |
| 271 | original issue) is assigned to *[email protected]*. |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 272 | |
| 273 | ### Preventing missed merges |
| 274 | |
| Harry Souders | 8b7e12e8 | 2025-01-13 23:03:09 | [diff] [blame] | 275 | To avoid the situation where a critical issue is present on a release branch |
| Harry Souders | 1907ad7 | 2025-01-22 17:16:03 | [diff] [blame] | 276 | but the fix isn't merged, Blintz evaluates all release-blocking issues |
| Harry Souders | 8b7e12e8 | 2025-01-13 23:03:09 | [diff] [blame] | 277 | targeting a milestone that has already branched and updates the *Merge* field |
| 278 | with *TBD-##* if the issue was marked as fixed after branch day but hasn't been |
| Amy Ressler | 373f7772 | 2024-02-03 00:39:47 | [diff] [blame] | 279 | merged. When this occurs, developers should evaluate the issue and either |
| 280 | request a merge if required (e.g. the fix did miss the release branch point) by |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 281 | updating the *Merge-Request* field, or update the *Merge* field with *NA-###* |
| 282 | (e.g. the fix is present in the release branch already or the merge is |
| Amy Ressler | 373f7772 | 2024-02-03 00:39:47 | [diff] [blame] | 283 | unnecessary for other reasons). |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 284 | |
| 285 | ## Appendix |
| 286 | |
| 287 | ### Merge criteria phases |
| 288 | |
| 289 | The table below describes the different phases that each milestone progresses |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 290 | through during its release cycle; this data is available via the Chromium Dash |
| 291 | [front-end](https://chromiumdash.appspot.com/branches) and |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 292 | [API](https://chromiumdash.appspot.com/fetch_milestones). |
| 293 | |
| Harry Souders | 8b7e12e8 | 2025-01-13 23:03:09 | [diff] [blame] | 294 | | Branch Phase | Period Begins | Period Ends | Acceptable Merges Include Fixes For: | |
| 295 | | --- | --- | --- | --- | |
| 296 | | beta | M(X) Branch | M(X) Stable Cut | Non-functional issues for Finch-gated features (e.g. add metrics, fix crash), noticeable new regressions, any release blockers, any security issues, emergency string issues (.GRD changes) | |
| 297 | | stable | M(X) Stable Cut | M(X+1) Stable | Urgent new regressions (especially user reports), urgent release blockers, important security issues (medium severity or higher) requested by the security team | |
| 298 | | extended (if applicable) | M(X+1) Stable | M(X+2) Stable | Important security issues (medium severity or higher) applicable to any platform supported by Chrome Browser requested by the security team | |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 299 | |
| 300 | ### Merge states and labels |
| 301 | |
| Harry Souders | 782e8b2c | 2024-02-05 06:24:50 | [diff] [blame] | 302 | The table below describes the different merge states applied via a bug's |
| Harry Souders | 1907ad7 | 2025-01-22 17:16:03 | [diff] [blame] | 303 | metadata fields. All merge states (except *Pending*) follow the form |
| 304 | *[State]-###*, where ### corresponds to the applicable milestone. If multiple |
| 305 | merges are required, these labels may appear multiple times on the same bug in |
| 306 | different states. |
| Alex Mineer | c5b6302 | 2021-08-26 21:36:05 | [diff] [blame] | 307 | |
| Harry Souders | 8b7e12e8 | 2025-01-13 23:03:09 | [diff] [blame] | 308 | | Field | Value | Step Owner | Next Steps | |
| 309 | | --- | --- | --- | --- | |
| 310 | | Merge-Request | ### | Release manager | Automation will review and either approve / reject directly, or pass the review to a release manager for manual evaluation | |
| Harry Souders | 1907ad7 | 2025-01-22 17:16:03 | [diff] [blame] | 311 | | Merge | Pending | Issue owner | Issue owner should follow the instructions in the merge request and assign it to *[email protected]* to begin review | |
| Harry Souders | 8b7e12e8 | 2025-01-13 23:03:09 | [diff] [blame] | 312 | | Merge | Review-### | Release manager | Release manager will evaluate and either approve, reject, or request additional information within two business days | |
| 313 | | Merge | Approved-### | Issue owner | Issue owner should cherry-pick the fix to the appropriate release branch ASAP | |
| 314 | | Merge | Merged-### | None | N/A; merge has already been landed, no further work required for given milestone | |
| 315 | | Merge | Rejected-### | Issue owner | Issue owner should re-request a merge to escalate if they feel the merge was erroneously rejected and should be re-evaluated | |
| 316 | | Merge | TBD-### | Issue owner | Issue owner should evaluate if a merge is required, then remove *TBD-##* and replace it with *NA-##* (if no merge needed) or re-request a merge (if needed) | |
| 317 | | Merge | NA-### | None | N/A; merge is not required to the relevant milestone, no further work required for given milestone | |