260 lines
7.5 KiB
Markdown
260 lines
7.5 KiB
Markdown
---
|
|
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
|
|
```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. |