Skip to content

Repository files navigation

revision logo

revision

CI status Go version MIT License

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.

revision in action — working-copy status, shelving a change and popping it back, colour-coded diffs with in-place search, filtering, directory staging, named changelists, history, update-to-revision and comparing two revisions, the svn command log, live theming, and committing

Why

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.

Features

  • lazygit-style layout — Status, Files, Log and Shelf panels down the left, a Main detail view beside them, and the svn command log beneath; switch with the number keys or Tab
  • 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 with w, or highlight a directory for the combined diff of everything beneath it
  • Staging built on a native SVN changelist — space stages a file or a whole subtree, c commits 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 stash SVN never shipped: pick files with v, set them aside with z, and merge them back with enter or p. 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 svn confirms 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 svn invocation, not one per file, and the run carries on past a file svn will not take — the toast names what landed and what was refused
  • Live refresh — an edit made outside revision reaches the Files and diff panels on its own, with the cursor and scroll where you left them; L turns 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 status and revisiting a file is instant
  • Filter or search any panel with /rev:, user:, state: and cl: parameters plus free text, and n / N to jump between matches
  • Open the highlighted file in vim, nvim, nano, or the editor around you — including a VS Code tab when revision is running on a remote host
  • Themes and in-app settings — six colour schemes, edited with S and saved to your config file
  • svn+ssh ready, self-updating release builds, a contextual footer and a full ? keybindings menu

Requirements

  • The svn command-line client on your PATH
  • Run revision from inside an SVN working copy (or pass --path)
  • OpenSSH's ssh-add and ssh-keygen if your working copy is served over svn+ssh://

Install

revision is a single self-contained binary.

Quick install (Linux / macOS)

curl -fsSL https://raw.githubusercontent.com/bapatchirag/revision/main/install.sh | sh

The 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.

With Go

go install github.com/bapatchirag/revision/cmd/revision@latest

Installed 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.

Prebuilt binaries

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.

Updating

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.

Quick start

cd /path/to/working-copy
revision                 # or from anywhere: revision --path /path/to/working-copy
  • 1 2 3 4 0 or Tab — move between the Status, Files, Log, Shelf and Main panels
  • space — stage the selected file, or every change beneath the selected directory
  • a — put an untracked file or directory under version control
  • c — commit the staged set · u — update the working copy
  • / — filter or search the focused panel · R — refresh
  • S — settings and themes · ? — every keybinding
  • q — quit

Full flag list: revision --help.

Documentation

bapatchirag.github.io/revision — installation, workflows, the full keybindings reference, configuration, troubleshooting, and the architecture notes.

Contributing

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.

License

MIT © Chirag Bapat

Releases

Used by

Contributors

Languages