| # Branch workflow |
| |
| [TOC] |
| |
| ## Single development branch [`aosp/androidx-main`] |
| |
| All feature development occurs in the public main development branch of the |
| Android Open Source Project: `androidx-main`. This branch serves as the central |
| location and source of truth for all AndroidX library source code. All `alpha` |
| and `beta` version work -- development, builds, and releases -- will be done |
| ONLY in this branch. |
| |
| ## Release branches [`aosp/androidx-\<feature\>-release`] |
| |
| Release branches are used for stabilitization of a library and support of a |
| previous stable release. With one development branch, this is how AndroidX |
| provides support for the previous `rc` or stable version. |
| |
| When a library updates to rc (release-candidate) or stable, that library version |
| will be snapped over to that library’s release branch. If that release branch |
| doesn’t exist, then a release branch will be created for that library, snapped |
| from androidx-main at the commit that changed the library to an rc or stable |
| version. |
| |
| Release branches have the following properties: |
| |
| * A release branch will contain `rc` or `stable` versions of libraries |
| * Release branches can **ONLY** be changed through cherry-picks |
| * Bug fixes and updates to `rc` or stable versions must be cherry-picked |
| * No `alpha` or `beta` versions will exist in a release branch. |
| * Toolchain and other library wide changes to `androidx-main` will be synced |
| to each release branch. |
| * Release branches will have the naming format |
| `androidx-<feature-name>-release` |
| * Release branches will be re-snapped from `androidx-main` for each new minor |
| version release (for example, releasing `2.2.0-rc01` after `2.1.0`) |