DiffView for Sublime Text 3
Git, SVN and Bazaar Diff Viewer for Sublime Text 3
Features
- Side-by-side view with differences highlighted
- Quick navigation from one change to the next, or search for diffs in a specific file
- Auto-detects the repository to use from the current active file
- Flexible diffs for Git, SVN and Bazaar (see below for the full set of options)
- The most common diff (uncommitted changes) is the quickest to use
Screenshots
With 'Persistent List' view style (default)
With 'Quick Panel' view style
Installation
- Install the Sublime Text Package Control plugin if you don't have it already
- Open the command palette and start typing
Package Control: Install Package
- Enter
DiffView
Usage
- See options under "DiffView" in the Command Palette, and also the following keyboard shortcuts
Alt + Shift + D
to run a diff
- Enter the diff to run, and hit enter
- See below for supported diff options
- This lists all the changes, and shows you a preview as you move down the list
- You can search for a particular file in the list of changes, which will filter the results
- Hit
Enter
to jump to the currently selected change
- hit
Esc
to cancel the DiffView, and return to where you were
Alt + D
to review the last diff
- This will show the list of changes from the last diff, starting from the last change you previewed
Supported Diff Options
Git
- Default (when there's no input): comparison of wc against
HEAD
- i.e. show unstaged changes
HEAD
or branch
or SHA
or tag
- compare working copy against
HEAD
/branch
/SHA
/tag
branch..
..branch
- compare working copy with
branch
branch_a..branch_b
- compare
branch_a
with branch_b
branch...
- compare the merge-base of the working copy and
branch
with the working copy
branch_a...branch_b
- compare the merge-base of
branch_a
and branch_b
with branch_b
SVN
- Default (when there's no input): show uncommitted changes
-r 123
- compare revision 123 with the latest revision (not the working copy)
-r 123:234
- compare revision 123 with revision 234
-c 234
- show changes made in commit 234
--cl issue1234
- show uncommitted changes on changelist
issue1234
Bazaar
- Default (when there's no input): show the difference in the working tree versus the last commit
-r1
- Show changes between the working tree and revision 1
-r1..3
- Show changes between revision 1 and revision 3
-r1..3 xxx
- Show changes between revision 1 and revision 3 for branch xxx
-c2
- Show the changes introduced by revision 2 (equivalent to
-r1..2
)
-r-2..
- Show the changes between the current revision and the previous revision (equivalent to
-c-1
and -r-2..-1
)
FILE
- Show just the differences for
FILE
xxx/FILE
- Show the differences in working tree xxx for
FILE
--old xxx
- Show the differences from branch xxx to this working tree
--old xxx --new yyy FILE
- Show the differences between two branches for
FILE
Configuration Options
Diff View Style
There are 2 different view styles supported - "Quick Panel" and "Persistent List". You can see them in action in the screenshots above. Try them both and pick a favourite!
{
// The style for viewing the diff. Options are:
// - "quick_panel"
// - "persistent_list"
"view_style": "persistent_list"
}
Highlighting Styles
Each of the highlihgted regions' styles can be configured in the settings. These settings are all documented in the 'Default' settings (Preferences -> Package Settings -> DiffVew -> Settings - Default
). Copy the settings to your User settings (Preferences -> Package Settings -> DiffVew -> Settings - User
) to override the defaults.
Collapsing Changes List
When working with the "Persistent List" view, to save space there's a configuration option to collapse the list of changes for each file. Toggle the details for the file using Tab
(by default).
To configure:
{
// Whether to collapse each file's list of changes in the "persistent_list" view.
"collapse_diff_list": true,
}
Invoking From Another Plugin
window.run_command(
"diff_view",
{
"diff_args": "origin/your-base...origin/your-branch",
"cwd": "/your/cwd",
},
)
Contributors
Thanks to the following for their contributions:
- @3v1n0 for adding Bazaar support
- @leeahoward for raising and providing the fix for #48
- @rkoval for adding an entrypoint for other plugins to use programmatically #65
Feedback
If you have any issues, comments, or feature suggestions, please raise them on GitHub. All feedback gratefully received.