Git Flow
Git Flow is a popular branching strategy in Git, developed by Vincent Driessen link, for a structured development process. The main branches are main for production code and develop for integrating new features. Feature branches are created from develop and merged back after completion. Release branches prepare releases, merging into both main and develop. Hotfix branches are for urgent production code fixes and also merge into both main branches. This strategy supports parallel development, simplifies large project management, and minimizes conflicts.
Large-scale Projects
Release management in large projects, which involve multiple teams and/or organizations, is a significant challenge. The success of implementing changes, system stability, and user satisfaction depends on proper coordination and management. Release management in such projects must include distinctive strategies and approaches to minimize risks and ensure the alignment of all participants' actions.
Org Branch
The Git Org Branch Strategy, where each branch corresponds to a specific environment (e.g., development, UAT, staging, production), is a useful concept for managing changes and deployments in corporate and large projects. This strategy is common in Salesforce projects due to licensing policies and environment setups that may not allow for full testing environments and limited use of Infrastructure as Code (IaC) approaches.
Parallel Releases
The Parallel Release Git strategy allows managing multiple versions of a product simultaneously. Separate release branches (release-x.x) are created for each release, enabling the preparation and testing of different product versions in parallel. Feature branches can be created from release-x.x branches, which serve as develop branches for the corresponding releases. This approach helps isolate changes and manage multiple product versions simultaneously, which is especially useful for projects with long development cycles and support for older versions. However, it requires strict branch management and synchronization of changes. An important feature is the designation of major and minor releases for their sequential synchronization.
Release on Demand
What is Release on Demand?