Panels, not commands
Status, Files, Log and Shelf down the left, a Main detail view beside them and the svn Command Log beneath. Switch with the number keys or tab. The panels
curl -fsSL https://raw.githubusercontent.com/bapatchirag/revision/main/install.sh | shGrabs the latest release build for your platform (see Installation). You need the svn client
on your PATH.
Panels, not commands
Status, Files, Log and Shelf down the left, a Main detail view beside them and the svn Command Log beneath. Switch with the number keys or tab. The panels
Staging that SVN understands
space stages a file or a whole directory subtree into a changelist — a git-index-like
workflow, built out of plain svn changelist. Staging & commit
Named changelists
Group the staged set into named lists, drill into any of them in a tabbed view, and commit one as a unit. Changelists
Diffs you can work in
Additions, deletions and hunk headers each tinted. Search in place, read it side by side with s, or write it to a file with w. Working with diffs
Filter anything
/ filters the focused panel, with rev:, user:, state: and cl: parameters for
the ones that support them. Filtering & searching
Update without surprises
Update to HEAD or to any revision picked out of the Log panel. Conflicts are spelled out before you confirm. Updating the working copy
Resolve it side by side
m lays a conflict — or a hunk a patch could not place — out two panes wide, with a key to take either side, both, or your editor. Resolving conflicts
Open it in your editor
Hand the selected file to vim, nvim, nano, or VS Code — which opens the real file in the window you are already in. Opening files in an editor
Themes and settings, in app
Six colour schemes and an in-app settings editor, written back to your config file. Themes · Configuration
These are the app’s own rendered output, read straight from its golden tests — selectable text, not screenshots.
╭─ [1] Status ─────────────────╮╭─ [0] Diff ───────────────────────────────────╮ │Root /home/alice/work/wc ││changelist: (staged) │ │Source /home/alice/work/wc ││ │ │CWD /home/alice/work/wc ││Loading diff… │ │Branch trunk ││ │ │Revision r42 ││ │ │HEAD r50 ││ │ ╰──────────────────────────────╯│ │ ╭─ [2] ─ Changes ─── Changelist╮│ │ │ ▾ / ││ │ │> ● A added.txt ││ │ │ M modified.go ││ │ │ D gone.txt ││ │ ╰────────────────── 1 of 3 ────╯│ │ ╭─ [3] Log ────────────────────╮│ │ │ Rev Author Message ││ │ │ r50 │╰──────────────────────────────────────────────╯ │ * r42 │╭─ Command Log ────────────────────────────────╮ │ ││No svn commands run yet. │ ╰────────────── 1 of 2 · 1 ────╯│ │ ╭─ [4] Shelf ──────────────────╮│ │ │ ││ │ ╰──────────────────────────────╯╰──────────────────────────────────────────────╯ space stage · a add · v pick · n changelist · c commit · r revert · d delete · …
╭─ [1] Status ─────────────────╮╭─ [0] Diff ───────────────────────────────────╮
│Root /home/alice/work/wc ││Index: src/a.go ┃│
│S╭─ Side-by-side diff — src/a.go ───────────────────────────────────────────╮┃│
│C│revision 42 │working copy │┃│
│B│────────────────────────────────────┼─────────────────────────────────────│┃│
│R│@@ -1,5 +1,6 @@ │┃│
│ │ 1 package main │ 1 package main │┃│
╰─│ 2 │ 2 │┃│
╭─│ 3 -import "fmt" │ 3 +import ( │┃│
│ │ │ 4 + "fmt" │┃│
│ │ │ 5 +) │┃│
│>│ 4 │ 6 │││
│ │ 5 func main() { │ 7 func main() { │││
╰─│@@ -20,3 +21,2 @@ │││
╭─│ 20 done() │ 21 done() │││
│ │ 21 - cleanup() │ │ │
│ │ 22 } │ 22 } │─╯
│ │ │ │─╮
│ │ │ │ │
╰─│ │ │ │
╭─│ │ │ │
│ ╰────────────────────────── src/a.go · 1-12 of 12 · e edit · esc close ────╯ │
╰──────────────────────────────╯╰──────────────────────────────────────────────╯
space stage · a add · v pick · n changelist · c commit · r revert · d delete · …╭─ [1] Status ─────────────────╮╭─ [0] Diff ───────────────────────────────────╮ │Root /home/alice/work/wc ││changelist: (staged) │ │Source /home/alice/work/wc ││ │ │CWD /home/alice/work/wc ││Loading diff… │ │Branch trunk ││ │ │Revision r42 ││ │ │ ││ │ ╰──────────────────────────────╯│ │ ╭─ [2] ─ Changes ─── Changelist╮│ │ │> ◆ feature-x (1) ││ │ │ ◆ (staged) (1) ││ │ │ ◆ (unstaged) (1) ││ │ │ ││ │ ╰────────────────── 1 of 3 ────╯│ │ ╭─ [3] Log ────────────────────╮│ │ │ Rev Author Message ││ │ │ │╰──────────────────────────────────────────────╯ │ │╭─ Command Log ────────────────────────────────╮ │ ││No svn commands run yet. │ ╰──────────────────────────────╯│ │ ╭─ [4] Shelf ──────────────────╮│ │ │ ││ │ ╰──────────────────────────────╯╰──────────────────────────────────────────────╯ space stage · a add · v pick · n changelist · c commit · r revert · d delete · …
╭─ [1] Status ─────────────────╮╭─ [0] Diff ───────────────────────────────────╮ │Root /home/alice/work/wc ││changelist: (staged) │ │Source /home/alice/work/wc ││ │ │CWD /home/alice/work/wc ││Loading diff… │ │Branch trunk ││ │ │Revision r42 ││ │ │ ╭─ Commit message ─────────────────────────────╮ │ ╰───────────────│Fix status parsing │ │ ╭─ [2] ─ Changes│ │ │ │ ▾ / │ │ │ │> ● M modifi│ │ │ │ │ │ │ │ │ │ │ ╰───────────────│ │ │ ╭─ [3] Log ─────│ │ │ │ Rev Author Me│ │ │ │ │ctrl+s submit · esc cancel │───────────────╯ │ ╰──────────────────────────────────────────────╯───────────────╮ │ ││No svn commands run yet. │ ╰──────────────────────────────╯│ │ ╭─ [4] Shelf ──────────────────╮│ │ │ ││ │ ╰──────────────────────────────╯╰──────────────────────────────────────────────╯ space stage · a add · v pick · n changelist · c commit · r revert · d delete · …
╭─ [1] S╭─ Keybindings ────────────────────────────────────────────────╮───────╮ │Root │Changes Navigation │ │ │Source │ Stage / unstage space Jump to panel 1 2 3 4 0│ │ │CWD │ Add to version control a Cycle panels tab / shift+tab│ │ │Branch │ Assign changelist n Move up / down k / j│ │ │Revisio│ Commit staged / list c Jump top / bottom g / G│ │ │ │ Expand changelist enter Next / prev history pa n / p│ │ ╰───────│ Revert / delete file r / d Scroll main up / down K / J│ │ ╭─ [2] ─│ Apply saved patch p Scroll main l / r h / l│ │ │ ▾ / │ Resolve conflict m Line start / end home / end│ │ │> │Shelf Filter panel /│ │ │ │ Pick / shelve v / z View │ │ │ │ Apply / pop enter / p Switch file view [ / ]│ │ ╰───────│ Drop / rename d / n Side-by-side / save s / w│ │ ╭─ [3] L│Working copy Pick revisions v│ │ │ Rev A│ Update working copy u Diff picked revisions enter│ │ │ │ Update to rev (Log) space Dir diff / untracked D / U│───────╯ │ │ Open file in editor e Toggle command log x│───────╮ │ │ Change source path P General │ │ ╰───────│ Switch repository W Toggle help ?│ │ ╭─ [4] S│ Refresh / settings R / S Quit q│ │ │ │ Toggle live refresh L │ │ ╰───────╰──────────────────────────────────────────────────────────────╯───────╯ space stage · a add · v pick · n changelist · c commit · r revert · d delete · …
revision is, and what it is not.svn or your keys get in the way.revision is MIT-licensed and built in the open on
GitHub — issues
and releases.