v0.5.3 Branching Update - griffingilreath/Punch-Card-Project GitHub Wiki
v0.5.3: The Branching Update
Released: March 24, 2024
The Branching Update implements a comprehensive Git branching strategy based on GitFlow while preserving the project's existing version archiving system.
Key Features
Git Branching Strategy
- Modified GitFlow Implementation: Structured approach to version control
- Branch Types:
master
: Main production branchdevelop
: Integration branch for new featuresfeature/*
: Feature branches for new developmentrelease/*
: Release preparation brancheshotfix/*
: Emergency fix branchesv*.*.*
: Version branches that preserve each release point
Version Management Tools
- git_version_manager.py: New command-line tool for managing branches and versions
- Integrated workflow with existing version_manager.py
- Automated version creation with commit history analysis
Documentation Improvements
- VERSION_CONTROL.md: Comprehensive documentation of the branching strategy
- Enhanced project structure documentation in the GitHub Wiki
- Streamlined wiki implementation for better project documentation
- Updated README with references to the version control system
Wiki Enhancements
- Project Structure documentation matching the README
- Removal of contribution guidelines (as it's a personal project)
- Improved navigation and organization of documentation
Command Examples
Feature Development Workflow
# Create a new feature branch
./scripts/git_version_manager.py feature display-improvements
# Work on the feature, then finish it
./scripts/git_version_manager.py finish-feature display-improvements
Release Workflow
# Create a release branch
./scripts/git_version_manager.py release 0.6.0
# Complete the release
./scripts/git_version_manager.py finish-release 0.6.0
Hotfix Workflow
# Create a hotfix branch
./scripts/git_version_manager.py hotfix 0.5.4
# Finish the hotfix
./scripts/git_version_manager.py finish-hotfix 0.5.4
Status Check
# Check the status of branches and versions
./scripts/git_version_manager.py status
Technical Details
Branch Lifecycle Management
- Feature branches merge into develop
- Release branches merge into both master and develop
- Hotfix branches merge into both master and develop
- Version branches preserve each release point
- Tags are created for each release
Integration with Existing Systems
- Preserves the physical version archives in
versions/
directory - Works with Git tags for version references
- Maintains complete version history
Visual Representation
┌───────────┐
│ master │
└─────┬─────┘
│
┌────────────┴────────────┐
│ │
┌─────────▼──────────┐ ┌────────▼───────┐
│ hotfix/v0.5.3 │ │ release/v0.6.0 │
└─────────┬──────────┘ └────────┬───────┘
│ │
│ │
┌────────▼────────┐ ┌─────────▼────────┐
│ v0.5.3 │ │ v0.6.0 │
└────────┬────────┘ └─────────┬────────┘
│ │
│ │
└──────────┐ ┌─────────┘
│ │
┌────▼────▼───┐
│ develop │
└──────┬──────┘
│
┌───────────┴──────────┐
│ │
┌─────────▼──────────┐ ┌────────▼────────┐
│ feature/display │ │ feature/api │
└─────────┬──────────┘ └────────┬────────┘
│ │
└──────────┬───────────┘
│
┌───────▼───────┐
│ develop │
└───────────────┘
Future Development
With the branching strategy in place, future development will follow this structured approach:
- New features will be developed in feature branches
- Regular releases will use the release branch process
- Emergency fixes will use the hotfix branch process
- Version history will be preserved through both Git branches and physical archives