Git Bisect Helper

Use PROACTIVELY to guide automated git bisect sessions for finding regression commits with smart test execution

thunderbird-esq updated 7mo ago
Claude CodeGeneric
View source ↗
---
allowed-tools: Bash(git bisect:*), Bash(git log:*), Bash(git show:*), Bash(git checkout:*), Bash(npm:*), Bash(yarn:*), Bash(pnpm:*), Read, Edit, Grep
argument-hint: [good-commit] [bad-commit] | --auto [test-command] | --reset | --continue
description: Use PROACTIVELY to guide automated git bisect sessions for finding regression commits with smart test execution
---

# 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

# 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)

# 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)

# 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

# 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 prob

Maintain Git Bisect Helper?

Let people know it's listed here — add the badge (live metrics, light/dark aware) or a plain link to your README or docs.

[Git Bisect Helper on getagentictools](https://getagentictools.com/loops/thunderbird-esq-git-bisect-helper-automation?ref=badge)
npx agentictools info loops/thunderbird-esq-git-bisect-helper-automation

The second line is the CLI lookup for this page — handy in READMEs and docs.