Skip to content

Improve Branch Management Strategy #4282

@Wi1l-B0t

Description

@Wi1l-B0t

Problem Statement

Currently, the branch management workflow follows this pattern:

  1. New features are merged into dev branch
  2. dev is then directly merged into master

Issues with current approach:

  • This branch management model lacks practical significance
  • New content merged into dev is merged into master without proper verification
  • The goal of ensuring all new features and changes are validated before release is not achieved

Proposed Solution

New Branch Management Strategy

1. Feature Development Flow

  • New features should be merged directly into master
  • master branch serves as the main development branch and continuously accepts new features

2. Release Branch Creation

  • After periodic intervals, create a release branch from master (e.g., release-v3.9-rc)
  • Once created, the release branch becomes independent and no new features are added to it
  • master branch continues to merge new features independently

3. Release Branch Validation Process

Release branches must go through a comprehensive validation process before actual release:

  1. Functional Testing

    • All functional test cases must pass
  2. Performance Testing

    • Performance benchmarks must be validated
  3. QA Validation

    • Testers must complete their validation cycles
  4. Testnet Deployment

    • Must run on testnet for at least 2 months before release
  5. Final Release

    • After successful validation: release-v3.9-rcrelease-v3.9

4. Bug Fixes and Maintenance

  • If bugs are discovered, critical fixes that must be merged should go into:
    • The most recent release branch(es) still running in production
    • Some fixes need to be:
      • Merged into master (for future releases)
      • Cherry-picked to the most recent 1 or 2 release branches (for current production releases)

Benefits

  1. Clear separation between development and release cycles
  2. Proper validation of all features before production release
  3. Stable release branches that only receive critical fixes
  4. Continuous development on master without blocking releases
  5. Extended testnet validation ensures production readiness

Example Workflow

New features should be released smoothly, rather than all at once.

master (continuous development)
  │
  ├─→ release-v3.8 (Running in production)
  |     |-> Only Hotfixes are merged into this branch
  |
  │
  ├─→ release-v3.9-rc (created from master)
  │     │
  │     ├─→ Testing & Validation (2+ months)
  |     ├─→ Only critical fixes are merged into this branch
  │     │
  │     └─→ release-v3.9 (final release)
  │
  └─→ (master continues with new features)

Metadata

Metadata

Assignees

No one assigned

    Labels

    DiscussionInitial issue state - proposed but not yet accepted

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions