Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Diffr

Pick two things and diff them. Context-menu git diffing for VS Code — no panels, no sidebars, no activity-bar icons. Just the menus that are already there.

Right-click a commit. Pick what to compare it against (another commit, a branch, a tag, the index, the working copy). Walk through the changed files in a QuickPick that stays open. That's the whole product.


Install

Diffr depends on the built-in Git extension and needs git on PATH.


Why Diffr?

VS Code's built-in "Open Changes" only diffs a file against its parent commit. To compare anything else — a commit against a branch tip, your working copy against three commits back, a single file across two arbitrary refs — you end up in git diff on the terminal or installing a heavy "git client" extension.

Diffr fills exactly that gap with the smallest possible surface area:

  • No new UI. Every entry point hangs off menus VS Code already shows (SCM history, SCM resource state, editor tab, file explorer) plus a few palette commands.
  • No custom renderer. Diffs open in vscode.diff — the same native diff editor as everything else.
  • One QuickPick per flow. Browsing many changed files is a list, not a panel. The picker stays open after each diff so you can fly through a review.
  • Pure shells out to git. No libgit2, no native binaries, no surprises about what's being compared.

At a glance

Source Control (Ctrl/Cmd+Shift+G)
└── History
    └── <right-click a commit>
        ├── Diffr: Compare with…              ← pick anything for Side B
        ├── Diffr: Compare with Working Copy  ← Side B = on-disk
        └── Diffr: Compare with Previous      ← Side B = parent commit

Source Control → Changes / Staged Changes / Merge Changes
└── <right-click a file>
    └── Diffr: Compare with Commit…           ← pick commit; diff vs working copy

Editor tab (right-click)         ──┐
File Explorer (right-click file) ──┼──► Diffr: Compare with Commit…
                                   └──   (uses that file as the target)

Command Palette (Ctrl/Cmd+Shift+P)
├── Diffr: Compare Two Commits
├── Diffr: Compare with Commit…              ← uses focused editor's file
└── Diffr: Reopen Last Comparison

Diff tabs are titled human-first, e.g. a1b2c3d ↔ Working Copy — src/foo.ts or a1b2c3d ↔ 9f8e7d6 — src/foo.ts. No internal labels, no debug strings.


Every command

There are seven commands. Three are reachable from the Command Palette; four are reachable only from a right-click menu (they need a target — a commit, a file — that the menu provides).

From the SCM History view (right-click a commit)

Open Source Control (Ctrl/Cmd+Shift+G), expand a repository's History section, and right-click any commit:

Menu label Command ID What it does
Diffr: Compare with… diffr.compareWith The right-clicked commit is Side A. A QuickPick asks what Side B is: Working Copy, Index, Pick a commit…, or Pick a branch or tag…. Then a file QuickPick lists every changed file; selecting one opens vscode.diff. The picker stays open so you can open many files in a row.
Diffr: Compare with Working Copy diffr.compareWithWorkingCopy Same as above, but Side B is hardcoded to your on-disk working copy. Skips the Side B prompt.
Diffr: Compare with Previous diffr.compareWithPrevious Side A is the right-clicked commit, Side B is its first parent (<sha>^1). Classic "what changed in this commit?" view.

These three are intentionally hidden from the Command Palette — they only make sense when invoked against a specific commit, which the right-click target provides.

From the SCM Changes view (right-click a changed file)

Right-click any file under Changes, Staged Changes, or Merge Changes:

Menu label Command ID What it does
Diffr: Compare with Commit… diffr.compareFileWithCommit Pick a commit from a log QuickPick. Opens a single-file diff: that file at the chosen commit ↔ your working copy.

From the editor tab title (right-click the file's tab)

Menu label Command ID What it does
Diffr: Compare with Commit… diffr.compareFileWithCommit Same as above; the target is the file whose tab you right-clicked.

From the File Explorer (right-click a file)

Menu label Command ID What it does
Diffr: Compare with Commit… diffr.compareFileWithCommit Same again — the target is the file you clicked in the tree.

From the Command Palette (Ctrl/Cmd+Shift+P)

Type Diffr: to filter. Three entries appear:

Palette label Command ID What it does
Diffr: Compare Two Commits diffr.compareTwoCommits No target needed. QuickPick chain: pick repo → pick Side A commit → pick Side B (working copy / index / commit / ref) → pick files.
Diffr: Compare with Commit… diffr.compareFileWithCommit Uses the currently focused editor's file as the target. Same flow as the right-click version. If no editor is focused, Diffr will tell you to open a file first.
Diffr: Reopen Last Comparison diffr.reopenLast Reopens the file picker for the last A↔B comparison you made (stored per-workspace). Handy after closing the picker mid-review.

Diffr: Show Logs (diffr.showLogs) exists but is hidden from the palette — it's reserved for the extension to surface its OutputChannel programmatically. Open it manually via View → Output → "Diffr".


What Side B can be

Whenever Diffr asks you to pick Side B, you get four choices:

  • Working Copy — the on-disk files in the repo (uncommitted changes included).
  • Index — the staging area (what git diff --cached would compare against).
  • Pick a commit… — choose from a QuickPick of recent log entries.
  • Pick a branch or tag… — choose from all refs; resolved to its tip commit.

Requirements

  • VS Code ^1.85.0
  • Git on PATH
  • The built-in Git extension (Diffr depends on it via extensionDependencies)

Troubleshooting

  • "No git repository found" — Diffr uses the built-in Git extension's repo list. If VS Code doesn't see your repo, neither will Diffr. Open the Source Control view and confirm the repo appears there.
  • Diffr menus don't appear in the SCM History view — make sure the workspace has commits and that you're right-clicking inside the History section (not Changes).
  • Anything elseView → Output → "Diffr" shows structured logs for every operation. Or run Diffr: Show Logs to focus the channel.

Issues & contributions

Bugs, feature requests, and PRs welcome at https://github.com/Nimblesite/Diffr/issues.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages