AndroidX Core Team | 0db91f0 | 2021-05-06 22:45:18 +0000 | [diff] [blame] | 1 | # Branch workflow |
AndroidX Core Team | 2e416b2 | 2020-12-03 22:58:07 +0000 | [diff] [blame] | 2 | |
| 3 | [TOC] |
| 4 | |
AndroidX Core Team | 0fab836 | 2023-03-02 09:32:29 -0800 | [diff] [blame] | 5 | ## Single development branch [`aosp/androidx-main`] |
AndroidX Core Team | 2e416b2 | 2020-12-03 22:58:07 +0000 | [diff] [blame] | 6 | |
AndroidX Core Team | 0db91f0 | 2021-05-06 22:45:18 +0000 | [diff] [blame] | 7 | All feature development occurs in the public main development branch of the |
AndroidX Core Team | 408c27b | 2020-12-15 15:57:00 +0000 | [diff] [blame] | 8 | Android Open Source Project: `androidx-main`. This branch serves as the central |
AndroidX Core Team | 0db91f0 | 2021-05-06 22:45:18 +0000 | [diff] [blame] | 9 | location and source of truth for all AndroidX library source code. All `alpha` |
| 10 | and `beta` version work -- development, builds, and releases -- will be done |
| 11 | ONLY in this branch. |
AndroidX Core Team | 2e416b2 | 2020-12-03 22:58:07 +0000 | [diff] [blame] | 12 | |
AndroidX Core Team | 0fab836 | 2023-03-02 09:32:29 -0800 | [diff] [blame] | 13 | ## Release branches [`aosp/androidx-\<feature\>-release`] |
AndroidX Core Team | 0db91f0 | 2021-05-06 22:45:18 +0000 | [diff] [blame] | 14 | |
| 15 | Release branches are used for stabilitization of a library and support of a |
| 16 | previous stable release. With one development branch, this is how AndroidX |
| 17 | provides support for the previous `rc` or stable version. |
AndroidX Core Team | 2e416b2 | 2020-12-03 22:58:07 +0000 | [diff] [blame] | 18 | |
| 19 | When a library updates to rc (release-candidate) or stable, that library version |
| 20 | will be snapped over to that library’s release branch. If that release branch |
| 21 | doesn’t exist, then a release branch will be created for that library, snapped |
AndroidX Core Team | 408c27b | 2020-12-15 15:57:00 +0000 | [diff] [blame] | 22 | from androidx-main at the commit that changed the library to an rc or stable |
| 23 | version. |
AndroidX Core Team | 2e416b2 | 2020-12-03 22:58:07 +0000 | [diff] [blame] | 24 | |
| 25 | Release branches have the following properties: |
| 26 | |
AndroidX Core Team | 0db91f0 | 2021-05-06 22:45:18 +0000 | [diff] [blame] | 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. |
AndroidX Core Team | 2e416b2 | 2020-12-03 22:58:07 +0000 | [diff] [blame] | 33 | * Release branches will have the naming format |
| 34 | `androidx-<feature-name>-release` |
AndroidX Core Team | 408c27b | 2020-12-15 15:57:00 +0000 | [diff] [blame] | 35 | * Release branches will be re-snapped from `androidx-main` for each new minor |
AndroidX Core Team | 0db91f0 | 2021-05-06 22:45:18 +0000 | [diff] [blame] | 36 | version release (for example, releasing `2.2.0-rc01` after `2.1.0`) |