blob: 8f321b71f6ceed54ef45312dabd44b71b23a578d [file] [log] [blame] [view]
AndroidX Core Team0db91f02021-05-06 22:45:18 +00001# Branch workflow
AndroidX Core Team2e416b22020-12-03 22:58:07 +00002
3[TOC]
4
AndroidX Core Team0fab8362023-03-02 09:32:29 -08005## Single development branch [`aosp/androidx-main`]
AndroidX Core Team2e416b22020-12-03 22:58:07 +00006
AndroidX Core Team0db91f02021-05-06 22:45:18 +00007All feature development occurs in the public main development branch of the
AndroidX Core Team408c27b2020-12-15 15:57:00 +00008Android Open Source Project: `androidx-main`. This branch serves as the central
AndroidX Core Team0db91f02021-05-06 22:45:18 +00009location 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.
AndroidX Core Team2e416b22020-12-03 22:58:07 +000012
AndroidX Core Team0fab8362023-03-02 09:32:29 -080013## Release branches [`aosp/androidx-\<feature\>-release`]
AndroidX Core Team0db91f02021-05-06 22:45:18 +000014
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.
AndroidX Core Team2e416b22020-12-03 22:58:07 +000018
19When a library updates to rc (release-candidate) or stable, that library version
20will be snapped over to that librarys release branch. If that release branch
21doesnt exist, then a release branch will be created for that library, snapped
AndroidX Core Team408c27b2020-12-15 15:57:00 +000022from androidx-main at the commit that changed the library to an rc or stable
23version.
AndroidX Core Team2e416b22020-12-03 22:58:07 +000024
25Release branches have the following properties:
26
AndroidX Core Team0db91f02021-05-06 22:45:18 +000027* 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.
AndroidX Core Team2e416b22020-12-03 22:58:07 +000033* Release branches will have the naming format
34 `androidx-<feature-name>-release`
AndroidX Core Team408c27b2020-12-15 15:57:00 +000035* Release branches will be re-snapped from `androidx-main` for each new minor
AndroidX Core Team0db91f02021-05-06 22:45:18 +000036 version release (for example, releasing `2.2.0-rc01` after `2.1.0`)