Branch Structure
The Dart project maintains four main branches:main
Used for everyday development. All CLs (changelists) should be landed here.- Purpose: Active development
- Activity: All feature development and bug fixes
- FLAGS: Unreleased features are hidden behind flags
- View: main branch VERSION
dev
Populated from the main branch via full pushes, typically twice a week.- Purpose: Early testing of main branch changes
- Activity: Full merges from main on green builds
- Cherry-picks: Only in emergencies
- Releases: dev channel builds
- View: dev branch VERSION
beta
Populated from the dev branch via full pushes (monthly) or cherry-picks during stabilization.- Purpose: Release candidate stabilization
- Activity: Full pushes from dev or cherry-picks during cherry-pick season
- Cherry-picks: Critical fixes during stabilization period
- Releases: beta channel builds
- View: beta branch VERSION
stable
The main release branch, populated from beta when a release is ready.- Purpose: Production releases
- Activity: Full pushes from beta or cherry-picks for patches
- Cherry-picks: Security, crash, and critical bug fixes
- Releases: stable channel builds
- View: stable branch VERSION
Release Cycle
The normal release cycle is approximately 2 months long, though timing may vary based on stability:- Early if: Stability metrics are excellent
- Late if: Additional stabilization is needed
- Feature-driven exceptions: Larger language changes may shift timelines to ensure tool synchronization
Development Phase (6-7 weeks)
Regular dev releases
Full merges from main to dev occur roughly twice a week on green builds.Quick bug fixes may trigger additional full pushes.
Cherry-Pick Season (2 weeks)
The final 2 weeks focus on stabilizing the beta channel for release.Critical fixes only
Only critical fixes are cherry-picked to beta. See Cherry-Picks for the process.
Stable Release
Once beta is sufficiently stable:Getting Changes to Beta
During cherry-pick season, critical fixes can be backported to beta. See the Cherry-Pick Process for detailed instructions on:- Determining if a fix qualifies for cherry-picking
- Creating and formatting cherry-pick CLs
- Getting approval and submitting changes