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