Back to Commands

Git Bisect Helper

Commands git-workflow 101
Install Command
npx claude-code-templates@latest --command git-workflow/git-bisect-helper
View on GitHub

Content

Git Bisect Helper & Automation

Automated git bisect session to find regression commits: $ARGUMENTS

Current Repository State

  • Current branch: !git branch --show-current
  • Recent commits: !git log --oneline -10
  • Git status: !git status --porcelain
  • Bisect status: !git bisect log 2>/dev/null || echo "No active bisect session"
  • Available tags: !git tag --sort=-version:refname | head -10

Task

Set up and manage an intelligent git bisect session to identify the exact commit that introduced a regression or bug.

Bisect Session Management

1. Session Initialization

  • Analyze commit history to suggest good/bad commit candidates
  • Set up bisect session with appropriate range
  • Validate that the range actually contains the regression
  • Create backup branch before starting bisect

2. Automatic Test Execution

  • Run specified test command at each bisect point
  • Interpret test results (exit codes, output patterns)
  • Automatically mark commits as good/bad based on test outcomes
  • Handle test environment setup/teardown

3. Manual Verification Support

  • Provide clear instructions for manual testing at each step
  • Show relevant changes in current commit
  • Guide user through good/bad decision process
  • Maintain bisect log with detailed reasoning

4. Smart Commit Analysis

  • Analyze commit messages for relevant keywords
  • Show file changes that might be related to the issue
  • Highlight suspicious patterns or large changes
  • Skip obviously unrelated commits when possible

Bisect Modes

Automatic Bisect (`--auto [test-command]`)

bash
# Automatically bisect using test command
/git-bisect-helper --auto "npm test"
/git-bisect-helper --auto "python -m pytest tests/test_regression.py"
/git-bisect-helper --auto "./scripts/check-performance.sh"

Process:

  1. Run test command at each bisect point
  2. Mark commit as good (exit code 0) or bad (non-zero)
  3. Continue until regression commit is found
  4. Provide detailed report of findings

Manual Guided Bisect

bash
# Interactive bisect with guidance
/git-bisect-helper v1.2.0 HEAD
/git-bisect-helper abc123 def456

Process:

  1. Show current commit details and changes
  2. Provide testing suggestions
  3. Wait for user input (good/bad)
  4. Continue to next bisect point
  5. Offer insights about current commit

Continue Existing Session (`--continue`)

bash
# Resume interrupted bisect session
/git-bisect-helper --continue

Process:

  1. Analyze current bisect state
  2. Show progress and remaining steps
  3. Continue with appropriate mode
  4. Provide context from previous steps

Reset Session (`--reset`)

bash
# Clean up and reset bisect session
/git-bisect-helper --reset

Process:

  1. End current bisect session
  2. Return to original branch
  3. Clean up temporary files
  4. Provide session summary

Intelligent Test Execution

Test Environment Detection

  • Node.js: Detect package.json and run appropriate package manager
  • Python: Identify requirements.txt, setup.py, pyproject.toml
  • Ruby: Look for Gemfile and use bundler
  • Java: Detect Maven (pom.xml) or Gradle (build.gradle)
  • Go: Identify go.mod and use go test
  • Rust: Detect Cargo.toml and use cargo test

Build System Integration

  • Run build process before testing if needed
  • Handle dependency installation for older commits
  • Manage environment variable requirements
  • Skip build for commits that don't compile (mark as bad)

Test Result Interpretation

  • Parse test output for meaningful error patterns
  • Distinguish between test failures and environment issues
  • Handle flaky tests with retry logic
  • Provide confidence levels for automated decisions

Commit Analysis Features

Change Impact Assessment

bash
# Analyze current bisect commit
Files changed: !`git show --name-only --pretty="" HEAD`
Commit message: !`git log -1 --pretty=format:"%s"`
Author and date: !`git log -1 --pretty=format:"%an (%ar)"`

Regression Pattern Detection

  • Identify commits touching critical areas
  • Flag commits with suspicious change patterns
  • Highlight performance-related modifications
  • Detect dependency or configuration changes

Context Preservation

  • Maintain detailed log of bisect decisions
  • Record reasoning for each good/bad marking
  • Save test outputs for later analysis
  • Document environmental factors

Advanced Bisect Strategies

Skip Strategy for Build Issues

  • Automatically skip commits that don't compile
  • Handle dependency version conflicts
  • Skip commits with known build system issues
  • Focus bisect on functional commits only

Performance Regression Detection

  • Use performance benchmarks instead of pass/fail tests
  • Set acceptable performance thresholds
  • Track performance trends across commits
  • Identify performance cliff points

Multi-criteria Bisecting

  • Test multiple aspects simultaneously
  • Handle cases where good/bad isn't binary
  • Support complex regression scenarios
  • Provide weighted decision making

Bisect Session Reporting

Progress Tracking

Bisect Progress:
šŸŽÆ Target: Find regression in user authentication
šŸ“Š Commits remaining: ~4 (out of 127)
ā±ļø  Estimated time: 8 minutes
šŸ” Current commit: abc123 - "refactor auth middleware"

Final Report

šŸŽ‰ Regression Found!

Bad Commit: def456
Author: John Doe
Date: 2024-01-15 14:30:00
Message: "optimize database queries"

Files Changed:
- src/auth/database.js
- src/middleware/auth.js
- tests/auth.test.js

Bisect Log: 15 steps, 3 manual verifications
Total Time: 12 minutes

Recovery Commands:
git revert def456                    # Revert the problematic commit
git cherry-pick def456^..def456~1    # Cherry-pick the good parts

Integration with Development Workflow

CI/CD Integration

  • Use same test commands as CI pipeline
  • Respect CI environment variables
  • Handle containerized test environments
  • Integrate with existing quality gates

Team Collaboration

  • Share bisect sessions with team members
  • Document findings in issue tracking
  • Create reproducible bisect scripts
  • Establish team bisect best practices

Debugging Enhancement

  • Generate debug reports for problematic commits
  • Create minimal reproduction cases
  • Suggest fix approaches based on regression type
  • Link to relevant documentation or similar issues

Safety and Recovery

Session Backup

  • Create backup branch before starting
  • Save original HEAD position
  • Maintain recovery information
  • Handle interrupted sessions gracefully

Error Handling

  • Recover from corrupted bisect state
  • Handle repository state conflicts
  • Manage disk space issues during long bisects
  • Provide clear error messages and solutions

Example Workflows

Performance Regression

bash
# Find when tests became slower
/git-bisect-helper --auto "timeout 30s npm test"

Feature Regression

bash
# Find when feature X broke
/git-bisect-helper --auto "./test-feature-x.sh"

Build Regression

bash
# Find when build started failing
/git-bisect-helper --auto "npm run build"

Manual Investigation

bash
# Interactive bisect for complex issues
/git-bisect-helper v2.1.0 HEAD

The bisect helper provides intelligent automation while maintaining full control over the debugging process, making regression hunting efficient and systematic.

Stack Builder

0 components

Your stack is empty

Browse components and click the + button to add them to your stack for easy installation.