Documentation · Quick start · Keybindings · Configuration
A lazygit-style terminal UI for Subversion (SVN). revision gives you a fast, keyboard-driven interface over the svn command line — review changes, stage with changelists, commit, update, and browse history without leaving your terminal.
SVN's command line is powerful but verbose for day-to-day work. revision wraps it in a focused TUI — inspired by lazygit — so common tasks are a keystroke away. It shells out to your existing svn binary, so it respects your working copy, credentials, and configuration.
- lazygit-style layout — Status, Files, Log and Shelf panels down the left, a Main detail view beside them, and the
svncommand log beneath; switch with the number keys orTab - Changed files as a collapsible directory tree, grouped under their folders, with the visible count in the panel footer — and a move drawn as a move, its destination marked
+and each half naming the other - Colour-coded diffs that follow your selection — read one side by side with
s, save it to a file withw, or highlight a directory for the combined diff of everything beneath it - Staging built on a native SVN changelist —
spacestages a file or a whole subtree,ccommits the set through an inline message editor - Named changelists — group the staged set into real SVN changelists, drill into one in a tabbed view, and commit it on its own
- Shelving — the
git stashSVN never shipped: pick files withv, set them aside withz, and merge them back withenterorp. Shelves live in an ignored directory beside the working copy, so there is nothing to configure - Update to HEAD with
u, or to any revision picked in the Log panel — conflicts are spelled out before you confirm - Resolve conflicts side by side with
m— each conflict, or each hunk a patch could not place, laid out two panes wide with a key to take either side, both, or your editor - Add an untracked file or a whole untracked directory with
a, and revert or delete a single file or every change beneath a directory — the destructive two confirm first - Instant staging — the row restyles on the keypress while
svnconfirms behind it, and a failure puts the previous state back; revert, delete and commit mark their rows as in flight rather than claiming a success they do not have yet - A set is one
svninvocation, not one per file, and the run carries on past a filesvnwill not take — the toast names what landed and what was refused - Live refresh — an edit made outside
revisionreaches the Files and diff panels on its own, with the cursor and scroll where you left them;Lturns the watcher off - Reads once, and only what you look at — diffs and history pages are cached for the session, so startup costs a single
svn statusand revisiting a file is instant - Filter or search any panel with
/—rev:,user:,state:andcl:parameters plus free text, andn/Nto jump between matches - Open the highlighted file in vim, nvim, nano, or the editor around you — including a VS Code tab when
revisionis running on a remote host - Themes and in-app settings — six colour schemes, edited with
Sand saved to your config file - svn+ssh ready, self-updating release builds, a contextual footer and a full
?keybindings menu
- The
svncommand-line client on yourPATH - Run
revisionfrom inside an SVN working copy (or pass--path) - OpenSSH's
ssh-addandssh-keygenif your working copy is served oversvn+ssh://
revision is a single self-contained binary.
curl -fsSL https://raw.githubusercontent.com/bapatchirag/revision/main/install.sh | shThe script detects your OS and architecture, downloads the matching binary from the latest release, and installs it without sudo (falling back to ~/.local/bin). The download is checked against the SHA-256 the release publishes and is abandoned if it does not match. Prebuilt binaries cover macOS on Apple silicon and Intel, and Linux on x86-64 and 64-bit ARM.
go install github.com/bapatchirag/revision/cmd/revision@latestInstalled at a published tag this is a release build, and self-updates like any other. It compiles from source, so it needs a Go toolchain and rather longer than downloading a binary.
Download the binary for your platform from the Releases page and put it on your PATH. Each release publishes revision-darwin-arm64, revision-darwin-amd64, revision-linux-amd64 and revision-linux-arm64.
Release builds check for a newer version on startup — at most once a day, remembered between launches — and offer to upgrade themselves; revision --update checks on demand from the command line. Either way the update is pinned to the release it announced, installed over the binary you are running, and verified afterwards. See Updating revision.
cd /path/to/working-copy
revision # or from anywhere: revision --path /path/to/working-copy12340orTab— move between the Status, Files, Log, Shelf and Main panelsspace— stage the selected file, or every change beneath the selected directorya— put an untracked file or directory under version controlc— commit the staged set ·u— update the working copy/— filter or search the focused panel ·R— refreshS— settings and themes ·?— every keybindingq— quit
Full flag list: revision --help.
bapatchirag.github.io/revision — installation, workflows, the full keybindings reference, configuration, troubleshooting, and the architecture notes.
Issues and pull requests are welcome — bug reports, feature ideas, and documentation fixes all help. Read CONTRIBUTING.md for the layout of the tree and what to run before opening a PR, and the Code of Conduct for what is expected of everyone taking part.
Stuck rather than filing a bug? SUPPORT.md points at the right page. Found a vulnerability? Report it privately — see SECURITY.md.
MIT © Chirag Bapat

