blob: 88867a53db38eb78eeaa68e0d4c6dc04f358f5e2 [file] [log] [blame] [view]
Abdul Syede21aa1b2017-07-06 17:13:061# Merge Request Process
2
3[TOC]
4
5## tl;dr
6
7* After branch point, all merges will be closely reviewed (either manually or
8 automatically) by TPMs and release owners.
9* Requirements for approving merges are becoming more
10 stringent and scrutiny of merges gets higher as we get closer to the
11 stable launch date. Any necessary merges should be requested as early as
12 possible.
13* All merge candidates should have full automated unit test coverage, have been deployed in Canary
14 for at least 24 hours, and full developer confidence that change will be
15 safe.
16* When requesting merge review, please provide clear explanation for why a merge
17 is required, the criticality and impact of the issue, and ensure that
18 bug is correctly labeled for all impacted OS's.
19
20## Introduction
21
22Chrome ships across multiple channels which are built from different release
23branches. In general, changes should first land on trunk, be shipped and
24verified in a canary release, and then promoted to our Dev, Beta, and Stable
25channels overtime. However, due to many reasons and scenarios, it’s
26possible that changes may miss branch date and require a merge post branch.
27
28**Merge**: any change that is cherry picked from trunk to a release branch.
29
30Please read overview of [Chrome Release
John Palmer046f9872021-05-24 01:24:5631Cycle](https://chromium.googlesource.com/chromium/src.git/+/main/docs/process/release_cycle.md)
Abdul Syede21aa1b2017-07-06 17:13:0632to understand in detail how the Chrome release cycle works and understand key
33release concepts and terminology. Please read [Defining Release
John Palmer046f9872021-05-24 01:24:5634Blockers](https://chromium.googlesource.com/chromium/src.git/+/main/docs/process/release_blockers.md)
Abdul Syede21aa1b2017-07-06 17:13:0635to understand how issues/bugs are categorized as release blocking.
36List of schedule and release owners can be found at [Chrome
37Calendar](https://chromepmo.appspot.com/calendar) (Googlers only, opening to all in the near future).
38
39## When to Request a Merge?
40
41This section will discuss when and what type of bugs can be merged based on
42criticality of the issue. Please note that the scrutiny of merges
43gets higher as we get closer to the stable launch date. Merges post
44stable-rollout have a higher bar than merges prior to Stable.
45
46![Chrome Merge Schedule](images/chrome_merge_schedule.png)
47
48**Phase 1: First Two Weeks After Branch (two weeks before beta promotion)**
49
50There are bugs and polish fixes that may not necessarily be considered
51critical but help with the overall quality of the product. There are also
52scenarios where dependent CL’s are missed by hours or days. To accommodate
53these scenarios, merges will be considered for all polish bugs, regressions,
54and release blocking bugs for the first two weeks after branch point.
55Please note that merges will not be accepted for
56implementing or enabling brand new features or functionality. Features
57should already be complete. Merges will be reviewed manually and
58automatically, depending on the type of change.
59
60GRD file changes are allowed only during this phase. If you have a critical
61string change needed after this phase, please reach out to release owner or
62Chrome TPMs.
63
64**Phase 2: First Four Weeks of Beta Rollout**
65
Alex Mineer40d33c32018-03-15 23:45:1466During the first four weeks of Beta, merges should only be requested if:
67
68* The bug is considered either release blocking or
69 considered a high-impact regression
70* The merge is related to a feature which (1) is entirely gated behind
71 a flag and (2) does not change user functionality in a substantial way
72 (e.g. minor tweaks and metrics code are OK, workflow changes are not)
Abdul Syede21aa1b2017-07-06 17:13:0673
74Security bugs should be consulted with
75[[email protected]]([email protected]) to
76determine criticality. If your issue does not meet the above criteria
77but you would still like to consider this merge, please reach out to
78release owner or TPMs with a detailed justification.
79
80**Phase 3: Last Two Weeks of Beta and Post Stable**
81
82During the last 2 weeks of Beta and after stable promotion, merges
83should only be requested for critical, release blocking issues where the
84fix is low complexity.
85
86Security bugs should be consulted with [chrome-security@]([email protected])
87to determine criticality.
88
Alan Cuttercba85fbf2019-10-18 06:21:4789If it is unclear whether the severity of the issue meets the bar for merging
90consult with the [TPM](https://chromiumdash.appspot.com/schedule) and your
91manager.
92
Abdul Syede21aa1b2017-07-06 17:13:0693This table below provides key dates and phases as an example, for M61 release.
94
95Key Event | Date
96------- | --------
97Feature Freeze | June 23rd, 2017
98Branch Date | July 20th, 2017
99Branch Stabilization Period | July 20th to August 3rd, 2017
100Merge Reviews Phase 1 | July 20th to August 3rd, 2017
101Beta Rollout | August 3rd to September 12th 2017
102Merge Reviews Phase 2 | August 3rd to August 31st 2017
103Merge Reviews Phase 3 | August 31st 2017 and post Stable release
104Stable Release | September 6th, 2017 + rollout schedule
105
106## Merge Requirements
107
108Before requesting a merge, please ensure following conditions are met:
109* **Full automated unit test coverage:** please add unit tests or
110 functional tests before requesting a merge.
111* **Deployed in Canary for at least 24 hours:** change has to
112 be tested and verified in Canary or Dev, before requesting a
113 merge. Fix should be tested by either test engineering or the
114 original reporter of the bug.
115* **Safe Merge:** Need full developer confidence that the
116 change will be a safe merge. Safe merge means that your
117 change will not introduce new regressions, or break
118 anything existing. If you are not confident that your
119 merge is fully safe, then reach out to TL or TPMs for
120 guidance.
121
122## Merge Request
123If the merge review requirements are met (listed in
124section above) and your change fits one of the timelines
125above, please go ahead and apply the
126Merge-Request-[Milestone Number] label on the bug and
127please provide clear justification in the bug.
128
129Please provide clear explanation for why a merge is required, what is the
130criticality and impact of the issue, and ensure that bug is correctly
131labeled for all impacted OS's.
132
133Approved merge requests in Phase 2 and Phase 3 will require a post mortem.
134
135Once Merge is approved, the bug will be marked with
136Merge-Approved-[Milestone-Number] label. Please merge
137**immediately after**. Please note that if change is not
138merged in time after approval, it can be rejected.
139
Alan Cuttere338ed92021-05-06 04:57:19140To perform the merge see [How to merge a change to a release
141branch](https://www.chromium.org/developers/how-tos/drover).
142
Abdul Syede21aa1b2017-07-06 17:13:06143If merge is rejected, “Merge-Rejected” label will be
144applied. If you think it’s important to consider the
145change for merge and does not meet the criteria above,
146please reach out to the release owners, TPMs or TLs for
147guidance.
148
149## Merge Reviews
150
151The release team has an automated process that helps
152with the merge evaluation process. It will enforce many
153of the rules listed in sections above. If the rules
154above don’t pass, it will either auto-reject or flag
155for manual review. Please allow up to 24 hours for the
156automated process to take effect.
157
158Manual merge reviews will be performed by release
159owners and TPMs.
Ian Barkley-Yeung3af975e2021-04-06 19:00:35160
161## Merge Process
162
163Once the merge has been approved, please see
164[How to merge a change to a release
165branch](https://sites.google.com/a/chromium.org/dev/developers/how-tos/drover)
166for technical details on performing the merge.