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 branch
    • develop: Integration branch for new features
    • feature/*: Feature branches for new development
    • release/*: Release preparation branches
    • hotfix/*: Emergency fix branches
    • v*.*.*: 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:

  1. New features will be developed in feature branches
  2. Regular releases will use the release branch process
  3. Emergency fixes will use the hotfix branch process
  4. Version history will be preserved through both Git branches and physical archives