trax/.claude/docs/parallel-development-workfl...

292 lines
6.6 KiB
Markdown

# Parallel Development with Git Worktrees
## Overview
Git worktrees enable parallel development across multiple features without branch switching overhead. Each worktree is an independent working directory with its own:
- Branch checkout
- Virtual environment
- File modifications
- Development state
## Worktree Structure
```
apps/
├── trax/ # Main repository (main branch)
└── trax-worktrees/ # Parallel development worktrees
├── trax-features/ # Feature development (feature/development)
├── trax-testing/ # Testing & QA (testing/qa)
├── trax-docs/ # Documentation (docs/updates)
├── trax-performance/ # Performance optimization (perf/optimization)
├── trax-bugfix/ # Bug fixes (fix/current)
├── switch.sh # Quick worktree switcher
└── status.sh # Status overview script
```
## Quick Start
### Setup Worktrees (One-Time)
```bash
cd apps/trax
.claude/scripts/setup_worktrees.sh
```
### Check Status
```bash
# See all worktrees and their status
/Users/enias/projects/my-ai-projects/apps/trax-worktrees/status.sh
# Or use git directly
git worktree list
```
### Switch Between Worktrees
```bash
# Interactive switcher
/Users/enias/projects/my-ai-projects/apps/trax-worktrees/switch.sh
# Or navigate directly
cd ../trax-worktrees/trax-features
source .venv/bin/activate
```
## Multi-Claude Workflow
Open separate Claude Code sessions for parallel work:
### Terminal 1: Feature Development
```bash
cd apps/trax-worktrees/trax-features
source .venv/bin/activate
claude
# Work on new features
```
### Terminal 2: Testing
```bash
cd apps/trax-worktrees/trax-testing
source .venv/bin/activate
claude
# Write and run tests
```
### Terminal 3: Documentation
```bash
cd apps/trax-worktrees/trax-docs
source .venv/bin/activate
claude
# Update documentation
```
## Workflow Patterns
### 1. Feature Development Pattern
```bash
# In trax-features worktree
git checkout -b feature/whisper-integration
# Implement feature
git add .
git commit -m "feat: add Whisper transcription service"
git push origin feature/whisper-integration
# Create PR on Gitea
```
### 2. Bug Fix Pattern
```bash
# In trax-bugfix worktree
git checkout -b fix/memory-leak
# Fix bug
git add .
git commit -m "fix: resolve memory leak in batch processor"
git push origin fix/memory-leak
# Create PR for quick merge
```
### 3. Testing Pattern
```bash
# In trax-testing worktree
# Pull latest changes from feature branch
git fetch origin
git checkout feature/whisper-integration
# Write comprehensive tests
uv run pytest tests/ -v
# Push test improvements
git push origin feature/whisper-integration
```
### 4. Documentation Pattern
```bash
# In trax-docs worktree
# Update docs for new features
git checkout -b docs/whisper-api
# Update documentation
git add docs/
git commit -m "docs: add Whisper API documentation"
git push origin docs/whisper-api
```
## Best Practices
### 1. Branch Naming Convention
- Features: `feature/description`
- Fixes: `fix/issue-description`
- Docs: `docs/what-updated`
- Performance: `perf/optimization-target`
- Testing: `test/what-testing`
### 2. Worktree Hygiene
```bash
# Clean up finished worktrees
git worktree remove ../trax-worktrees/trax-features
# Prune stale worktree info
git worktree prune
# Re-create if needed
git worktree add ../trax-worktrees/trax-features feature/new-work
```
### 3. Syncing Changes
```bash
# In any worktree, pull latest main
git fetch origin
git merge origin/main
# Or rebase for cleaner history
git rebase origin/main
```
### 4. Virtual Environment Management
Each worktree has its own `.venv`:
```bash
# Activate worktree's venv
source .venv/bin/activate
# Install new dependencies
uv pip install package-name
# Sync with pyproject.toml
uv pip install -e ".[dev]"
```
## Common Commands
### Worktree Management
```bash
# List all worktrees
git worktree list
# Add new worktree
git worktree add ../trax-worktrees/trax-experimental experimental/ai-agents
# Remove worktree
git worktree remove ../trax-worktrees/trax-experimental
# Clean up
git worktree prune
```
### Branch Operations
```bash
# Push new branch to remote
git push -u origin branch-name
# Delete remote branch after merge
git push origin --delete branch-name
# Clean up local branches
git branch -d branch-name
```
## Integration with Gitea
### Creating Pull Requests
```bash
# After pushing branch
gh pr create --title "Feature: Description" --body "Details"
# Or use Gitea web UI
open https://eniasgit.zeabur.app/demo/trax
```
### CI/CD Triggers
Each worktree push triggers Gitea workflows:
- Linting and formatting checks
- Test suite execution
- Type checking
- Build validation
## Troubleshooting
### Issue: Worktree locked
```bash
# Remove lock file
rm .git/worktrees/*/locked
# Or force remove
git worktree remove --force <path>
```
### Issue: Branch conflicts
```bash
# In worktree with conflicts
git fetch origin
git rebase origin/main
# Resolve conflicts
git rebase --continue
```
### Issue: Venv issues
```bash
# Recreate virtual environment
rm -rf .venv
python3.11 -m venv .venv
source .venv/bin/activate
uv pip install -e ".[dev]"
```
## Advanced Patterns
### 1. Experimental Features
Create isolated worktree for experiments:
```bash
git worktree add ../trax-experiment experimental/crazy-idea
cd ../trax-experiment
# Experiment freely without affecting other work
```
### 2. Release Preparation
Dedicated worktree for releases:
```bash
git worktree add ../trax-release release/v1.0.0
cd ../trax-release
# Prepare release: version bumps, changelog, etc.
```
### 3. Hotfix Workflow
Quick fixes on production:
```bash
git worktree add ../trax-hotfix main
cd ../trax-hotfix
git checkout -b hotfix/critical-bug
# Fix and push immediately
```
## Performance Benefits
1. **No context switching**: Each worktree maintains its state
2. **Parallel testing**: Run tests in one worktree while developing in another
3. **Instant branch access**: No need to stash/commit to switch branches
4. **Independent dependencies**: Each worktree can have different package versions
5. **Multiple Claude sessions**: Each worktree can have its own Claude Code instance
## Summary
Git worktrees provide a powerful parallel development environment:
- 🚀 **5 default worktrees** for common workflows
- 🔧 **Convenience scripts** for management
- 🐍 **Independent Python environments** per worktree
- 📝 **Clear branch organization** by purpose
- 🤖 **Multi-Claude capability** for parallel AI assistance
Use worktrees to maintain development velocity while keeping clean separation between different work streams.