1# Branch workflow
2
3[TOC]
4
5## Single development branch [`aosp/androidx-main`]
6
7All feature development occurs in the public main development branch of the
8Android Open Source Project: `androidx-main`. This branch serves as the central
9location and source of truth for all AndroidX library source code. All `alpha`
10and `beta` version work -- development, builds, and releases -- will be done
11ONLY in this branch.
12
13## Release branches [`aosp/androidx-\<feature\>-release`]
14
15Release branches are used for stabilitization of a library and support of a
16previous stable release. With one development branch, this is how AndroidX
17provides support for the previous `rc` or stable version.
18
19When a library updates to rc (release-candidate) or stable, that library version
20will be snapped over to that library’s release branch. If that release branch
21doesn’t exist, then a release branch will be created for that library, snapped
22from androidx-main at the commit that changed the library to an rc or stable
23version.
24
25Release branches have the following properties:
26
27*   A release branch will contain `rc` or `stable` versions of libraries
28*   Release branches can **ONLY** be changed through cherry-picks
29*   Bug fixes and updates to `rc` or stable versions must be cherry-picked
30*   No `alpha` or `beta` versions will exist in a release branch.
31*   Toolchain and other library wide changes to `androidx-main` will be synced
32    to each release branch.
33*   Release branches will have the naming format
34    `androidx-<feature-name>-release`
35*   Release branches will be re-snapped from `androidx-main` for each new minor
36    version release (for example, releasing `2.2.0-rc01` after `2.1.0`)
37