GitScout

Git visualization and exploration for VS Code — inline blame, eight Source Control tree views, branch comparison, all driven through a single bounded-concurrency git queue.
Inspired by GitLens; deliberately scoped smaller and faster.
Features
- Inline blame — author, relative date, and commit summary at the end of the current line
- Eight Source Control views — Commits, Branches, Stashes, File History, Tags, Remotes, Worktrees, Contributors
- Expandable commits and stashes — drill into changed files directly from the view; click any file for a side-by-side diff
- File-type icons — file rows render with your active File Icon Theme glyphs, not generic diff markers
- Folder-tree layout with path compression —
projects/gather_app/lib collapses to one row, expands when there's a real branch
- Branch comparison — pick any branch, see all changed files vs. current, click for diffs; tree-by-folder or flat-by-status modes
- Real-time updates — stashes appear the moment you create them from the terminal, no refresh needed
- Multi-root aware — repo-wrapper nodes appear automatically when more than one repo is open
- Loading indicators — toast progress on every mutation; in-view progress while comparisons load
Install
Local install (from .vsix)
npm install -g @vscode/vsce # one-time
npm run package:install # builds, packages, installs into your VS Code
Or from VS Code's Run/Debug panel: Package & Install Extension → green play button.
Marketplace
Search for GitScout in the Extensions view, or install from the VS Code Marketplace / Open VSX.
Settings
| Key |
Type |
Default |
Description |
git-scout.blame.enabled |
boolean |
true |
Show inline blame annotations |
git-scout.blame.format |
string |
"{author}, {agoOrDate} • {summary}" |
Template tokens: {author}, {ago}, {date}, {agoOrDate}, {summary}, {sha} |
git-scout.blame.delay |
number |
250 |
Debounce ms before showing the annotation |
git-scout.blame.agoThresholdDays |
number |
7 |
{agoOrDate} switches from relative to absolute date at this age |
git-scout.commits.pageSize |
number |
50 |
Commits loaded per page |
git-scout.fileHistory.pageSize |
number |
50 |
File history entries loaded per page |
git-scout.contributors.sortBy |
commits | name | recent |
commits |
Contributors sort order |
git-scout.comparison.defaultMode |
auto | tree | flat |
auto |
Comparison view default display |
git-scout.comparison.flatThreshold |
number |
20 |
When defaultMode = auto, switch to tree above this file count |
git-scout.encoding |
string |
"utf8" |
Encoding for blame output (decoded via iconv-lite) |
git-scout.git.maxConcurrent |
number |
7 |
Max concurrent git processes; resizes live on change |
Commands
All commands live under the GitScout: prefix in the Command Palette. Tree-item right-click menus expose context-appropriate subsets.
Notable commands:
- GitScout: Compare with Current — pick a branch and see the diff
- GitScout: Refresh — refresh every view at once
- Per-view refresh, load more, copy, and mutation actions
Edge cases worth knowing
- Detached HEAD — Commits view shows reachable commits; Branches view marks no current branch; Comparison treats
HEAD@<shortSha> as the anchor.
- Empty repo — views render empty placeholders; blame is suppressed; comparison is disabled until the repo has at least one branch.
- Untracked file — blame and File History suppress quietly; no error toast.
- Renamed files — File History uses
--follow; Comparison surfaces both the new and old paths.
- Submodules — VS Code's git extension exposes them as separate repos, so they appear as their own top-level repo nodes.
- Large repos — log and file history paginate (50 per page by default); blame and comparisons run through a bounded concurrency queue (7 by default).
Requirements
- VS Code
^1.85.0
- Git
2.20+
- macOS, Linux, or Windows (the blame parser handles UTF-8 today; other encodings via
git-scout.encoding)
Contributing
See DEVELOPMENT.md for architecture notes, the test strategy, and the build/release workflow.
License
MIT
| |