Git Processor
February 20, 2026 ยท View on GitHub
File: src/processors/git.py | Priority: 20 | Name: git
Handles all common git subcommands, including those with global options (-C, --no-pager, -c, --git-dir, --work-tree).
Supported Commands
| Command | Strategy |
|---|---|
git status | Condensed: branch info, counters by type (M, A, D, R, C, ?), files grouped by directory. More than 8 files in a directory: collapsed with breakdown. Handles long-format and short-format status, merge conflicts (UU, AA, DD, AU, UA, DU, UD), and HEAD detached |
git diff | Preserves all filenames, hunk headers, and change lines (+/-). Strips index and ---/+++ headers. Reduces context lines to 3 before/after each change. Truncates hunks beyond 150 lines |
git diff --stat | Strips visual bars (+++---), keeps filenames and change counts |
git diff --name-only | Groups by directory when > 20 files |
git diff --name-status | Groups by directory when > 20 files |
git log | Compact one-line format (hash message), max 20 entries. Detects --graph format and preserves ASCII art structure |
git show | Compact header (strips Author/Date/Merge) + compressed diff |
git push/pull/fetch/clone | Strips progress bars and counters, keeps only the result |
git branch | If > 30 branches: current branch + first 5 + counter |
git stash list | Truncates beyond 10 entries |
git reflog | Truncates beyond 20 entries |
git blame | Groups by author with line counts and percentages, shows last 10 lines for context. Short files (< 20 lines) pass through |
git cherry-pick/rebase/merge | Strips progress (counting/compressing objects), keeps result |
Configuration
| Parameter | Default | Description |
|---|---|---|
max_diff_hunk_lines | 150 | Max lines per hunk in git diff |
max_diff_context_lines | 3 | Context lines kept before/after each change |
max_log_entries | 20 | Max entries in git log/reflog |
git_branch_threshold | 30 | Branches before compaction |
git_stash_threshold | 10 | Stash entries before truncation |
Example
Before (git status):
On branch feature/auth
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
modified: src/auth.py
modified: src/models.py
Untracked files:
(use "git add <file>..." to include in what will be committed)
src/new_handler.py
tests/test_auth_new.py
no changes added to commit
After:
On branch feature/auth | no changes added to commit
Files: 4 (?:2, M:2)
src/M auth.py
src/M models.py
src/? new_handler.py
tests/? test_auth_new.py