xref: /aosp_15_r20/external/perfetto/docs/contributing/chrome-branches.md (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard Worker# Branching Perfetto for Chrome milestones
2*6dbdd20aSAndroid Build Coastguard Worker
3*6dbdd20aSAndroid Build Coastguard WorkerMerging a (set of) Perfetto change(s) to a Chrome milestone release requires
4*6dbdd20aSAndroid Build Coastguard Workercreation of a branch in the perfetto repo, cherry-picking of the change(s) to
5*6dbdd20aSAndroid Build Coastguard Workerthe branch, and updating the `DEPS` file in Chrome's milestone branch to point
6*6dbdd20aSAndroid Build Coastguard Workerto the new perfetto branch's head.
7*6dbdd20aSAndroid Build Coastguard Worker
8*6dbdd20aSAndroid Build Coastguard Worker## Creating the perfetto branch {#branch}
9*6dbdd20aSAndroid Build Coastguard Worker
10*6dbdd20aSAndroid Build Coastguard Worker1.  Determine the branch name: **`chromium/XXXX`**, where `XXXX` is the branch
11*6dbdd20aSAndroid Build Coastguard Worker    number of the milestone (see
12*6dbdd20aSAndroid Build Coastguard Worker    [Chromium Dash](https://chromiumdash.appspot.com/branches)). Example for
13*6dbdd20aSAndroid Build Coastguard Worker    M87: `chromium/4280`.
14*6dbdd20aSAndroid Build Coastguard Worker
15*6dbdd20aSAndroid Build Coastguard Worker1.  Check if the branch already exists: if yes, skip to
16*6dbdd20aSAndroid Build Coastguard Worker    [cherry-picking](#all-tables). To check, you can search for it in
17*6dbdd20aSAndroid Build Coastguard Worker    [Gerrit's branch page](https://android-review.googlesource.com/admin/repos/platform/external/perfetto,branches).
18*6dbdd20aSAndroid Build Coastguard Worker
19*6dbdd20aSAndroid Build Coastguard Worker1.  Look up the appropriate base revision for the branch. You should use the
20*6dbdd20aSAndroid Build Coastguard Worker    revision that Chromium's `DEPS` of the milestone branch points to (search
21*6dbdd20aSAndroid Build Coastguard Worker    for `perfetto` in the file). The `DEPS` file for branch XXXX is at:
22*6dbdd20aSAndroid Build Coastguard Worker
23*6dbdd20aSAndroid Build Coastguard Worker    `https://chromium.googlesource.com/chromium/src.git/+/refs/branch-heads/XXXX/DEPS`
24*6dbdd20aSAndroid Build Coastguard Worker
25*6dbdd20aSAndroid Build Coastguard Worker    Example for M87:
26*6dbdd20aSAndroid Build Coastguard Worker    [`DEPS`](https://chromium.googlesource.com/chromium/src.git/+/refs/branch-heads/4280/DEPS)
27*6dbdd20aSAndroid Build Coastguard Worker    (at time of writing) points to `f4cf78e052c9427d8b6c49faf39ddf2a2e236069`.
28*6dbdd20aSAndroid Build Coastguard Worker
29*6dbdd20aSAndroid Build Coastguard Worker1.  Create the branch - the easiest way to do this is via
30*6dbdd20aSAndroid Build Coastguard Worker    [Gerrit's branch page](https://android-review.googlesource.com/admin/repos/platform/external/perfetto,branches).
31*6dbdd20aSAndroid Build Coastguard Worker    The `NEW BRANCH` button on the top right opens a wizard - fill in the branch
32*6dbdd20aSAndroid Build Coastguard Worker    name and base revision determined above. If this fails with a permission
33*6dbdd20aSAndroid Build Coastguard Worker    issue, contact the [Discord chat](https://discord.gg/35ShE3A) or
34*6dbdd20aSAndroid Build Coastguard Worker    [perfetto-dev](https://groups.google.com/forum/#!forum/perfetto-dev) mailing
35*6dbdd20aSAndroid Build Coastguard Worker    list.
36*6dbdd20aSAndroid Build Coastguard Worker
37*6dbdd20aSAndroid Build Coastguard Worker## Cherry-picking the change(s) {#cherry-pick}
38*6dbdd20aSAndroid Build Coastguard Worker
39*6dbdd20aSAndroid Build Coastguard Worker1.  If there are no merge conflicts, cherry-picking via Gerrit will be easiest.
40*6dbdd20aSAndroid Build Coastguard Worker    To attempt this, open your change in Gerrit and use the `Cherry pick` entry
41*6dbdd20aSAndroid Build Coastguard Worker    in the overflow menu on the top right, providing the `chromium/XXXX` branch
42*6dbdd20aSAndroid Build Coastguard Worker    name (see [above](#branch)).
43*6dbdd20aSAndroid Build Coastguard Worker
44*6dbdd20aSAndroid Build Coastguard Worker1.  Otherwise, merge the patch locally into a branch tracking
45*6dbdd20aSAndroid Build Coastguard Worker    `origin/chromium/XXXX` and upload a Gerrit change as usual:
46*6dbdd20aSAndroid Build Coastguard Worker
47*6dbdd20aSAndroid Build Coastguard Worker    ```
48*6dbdd20aSAndroid Build Coastguard Worker    $ git fetch origin
49*6dbdd20aSAndroid Build Coastguard Worker    $ git checkout -tb cpick origin/chromium/XXXX
50*6dbdd20aSAndroid Build Coastguard Worker    $ git cherry-pick -x <commit hash>    # Resolve conflicts manually.
51*6dbdd20aSAndroid Build Coastguard Worker    $ tools/gen_all out/xxx               # If necessary.
52*6dbdd20aSAndroid Build Coastguard Worker    $ git cl upload    # Remove "Change-Id:" lines from commit message.
53*6dbdd20aSAndroid Build Coastguard Worker    ```
54*6dbdd20aSAndroid Build Coastguard Worker
55*6dbdd20aSAndroid Build Coastguard Worker1.  Send the patch for review and land it. Note the commit's revision hash.
56*6dbdd20aSAndroid Build Coastguard Worker
57*6dbdd20aSAndroid Build Coastguard Worker## Updating the DEPS file in Chromium
58*6dbdd20aSAndroid Build Coastguard Worker
59*6dbdd20aSAndroid Build Coastguard Worker1.  Create, send for review, and land a Chromium patch that edits the top-level
60*6dbdd20aSAndroid Build Coastguard Worker    `DEPS` file on the Chromium's milestone branch. You can also combine this
61*6dbdd20aSAndroid Build Coastguard Worker    step with cherry-picks of any chromium changes. For details, see
62*6dbdd20aSAndroid Build Coastguard Worker    [Chromium's docs](https://www.chromium.org/developers/how-tos/drover). It
63*6dbdd20aSAndroid Build Coastguard Worker    amounts to:
64*6dbdd20aSAndroid Build Coastguard Worker
65*6dbdd20aSAndroid Build Coastguard Worker    ```
66*6dbdd20aSAndroid Build Coastguard Worker    $ gclient sync --with_branch_heads
67*6dbdd20aSAndroid Build Coastguard Worker    $ git fetch
68*6dbdd20aSAndroid Build Coastguard Worker    $ git checkout -tb perfetto_uprev refs/remotes/branch-heads/XXXX
69*6dbdd20aSAndroid Build Coastguard Worker    $ ...    # Edit DEPS.
70*6dbdd20aSAndroid Build Coastguard Worker    $ git cl upload
71*6dbdd20aSAndroid Build Coastguard Worker    ```
72