Branching Strategy
This document outlines the Git branching strategy for the project, ensuring a structured and efficient development
workflow. The strategy is based on GitFlow but modified to include a develop-snapshot branch for weekly mentor
reviews.
Core Branches
main
Contains production-ready code.
Direct commits are disabled; only merges from develop-snapshot and hotfix/* are allowed.
Managed by the mentor, who merges reviewed changes from develop-snapshot.
develop
Primary branch for active development.
All feature branches are merged into develop via Pull Requests.
Represents the latest but unreviewed development progress.
develop-snapshot
Aggregates weekly work from develop.
Pull Requests from develop are reviewed by the mentor before merging into main.
Serves as a staging branch for mentor validation.
Supporting Branches
feature/*
Used for developing new features or improvements.
Created from develop.
Naming convention: feature/<short-description> (e.g., feature/user-authentication).
Merged back into develop via Pull Request.
Branch
Purpose
docs/*
Documentation changes. Merges into develop.
refactor/*
Code refactoring. Merges into develop.
test/*
Test-related changes. Merges into develop.
chore/*
Maintenance tasks. Merges into develop.
bugfix/*
Bug fixes. Merges into develop.
hotfix/*
For urgent fixes to main.
Created from main when critical issues arise.
Naming convention: hotfix/<issue-description> (e.g., hotfix/fix-login-error).
Merged back into both main and develop.
release/* (Optional, Used for Structured Releases)
Only needed when we plan a structured version release.
Created from develop-snapshot when stabilizing for a major release.
Naming convention: release/v<version-number> (e.g., release/v1.0.0).
Used for final testing, version tagging, and minor fixes before merging into main.
Merged into both main and develop once finalized.
Workflow Process
Feature Development
Create a feature branch from develop:
git checkout develop
git checkout -b feature/user-authentication
Develop and commit changes regularly.
Create a Pull Request (PR) to develop when ready.
The team reviews the code before merging into develop.
Weekly Review Process
At the end of each week, create a PR from develop to develop-snapshot.
The mentor reviews the code in develop-snapshot.
Once approved, the mentor merges develop-snapshot into main.
Hotfix Process
If an issue is found in main, create a hotfix branch:
git checkout main
git checkout -b hotfix/fix-login-error
2. Implement the fix and test it.
3. Create a PR to merge it into both main and develop.
Structured Release Process (If Needed)
When preparing for a major release, create a release/* branch:
git checkout develop
git checkout -b release/v1.0.0
Finalize testing and documentation.
Merge release/* into main and develop once stable.
Summary of Branch Responsibilities
Branch
Purpose
main
Production-ready code. Merges from develop-snapshot.
develop
Active development. Merges feature branches.
develop-snapshot
Weekly review branch before merging to main.
feature/*
New feature development. Merges into develop.
hotfix/*
Emergency fixes for main. Merges into main and develop.
release/* (Optional)
Stabilization for structured releases before merging to main.