Working with Release Branches
This applies to commits to Chromium repository branches. For changes to Chromium OS repositories, see the information here.
Checking out a release branch
Note: Prior to branch 3420 it is usually NOT possible to sync and build a release branch (i.e. with consistent third_party DEPS), The instructions below will only work with branch 3420 or later. For old branches, please refer to the internal documentation (go/ChromeReleaseBranches).
# Make sure you are in 'src'.
# This part should only need to be done once, but it won't hurt to repeat it.
# The first time checking out branches and tags might take a while because it
# fetches an extra 5 GB or so of branch commits.
gclient sync --with_branch_heads --with_tags
# You may have to explicitly 'git fetch origin' to pull branch-heads/
git fetch
# Checkout the branch 'src' tree. $BRANCH can be found under Chromium
# [here](https://chromiumdash.appspot.com/branches).
git checkout -b branch_$BRANCH branch-heads/$BRANCH
# Checkout all the submodules at their branch DEPS revisions.
gclient sync --with_branch_heads --with_tags
Building a branch
Once checked out, building a branch should be the same as building
trunk. To avoid clobbering other build
artifacts, you may want to specify a different build directory (e.g.
//out/Branch1234
instead of //out/Default
).
Merging a patch from another branch (e.g. trunk)
Please see the cherry-pick/drover instructions.
Developing a patch directly on the branch
Note: Bugs should generally be fixed and tested on trunk (canary) and then merged to branches. However, if you cannot do that:
# Make sure you are in 'src'.
# Create a branch for the patch.
git new-branch --upstream branch-heads/$BRANCH my_hack_on_the_branch
# Develop normally.
git commit
git cl upload
# After your CL is carefully reviewed, land via the normal CQ process.
git cl land
Syncing and building a release tag
Releases are tagged in git with the release version number. Note: You cannot commit to a release tag. This is purely for acquiring the sources that went into a release build.
# Make sure you have all the release tag information in your checkout.
git fetch --tags
# Checkout whatever version you need (known versions can be seen with
# 'git show-ref --tags')
git checkout -b your_release_branch 74.0.3729.131 # or tags/74.0.3729.131
gclient sync --with_branch_heads --with_tags
Then build as normal.
Get back to the "trunk"
# Make sure you are in 'src'.
git checkout -f origin/main
gclient sync