Open source · Written in Go
SVN in the
terminal, finally.
A keyboard-driven TUI for Subversion. Navigate status, view diffs, commit, revert — all without leaving your terminal.
$
curl -fsSL https://lazysvn.sawirstudio.com/install.sh | sh
copy
LazySVN - SVN TUI
Changes
> [M] src/auth/login.go
* [M] src/api/handler.go
[A] src/middleware/cors.go
[D] src/legacy/compat.go
[M] config/settings.yaml
[?] docs/api-v2.md
[M] tests/auth_test.go
[A] src/middleware/rate.go
Diff: src/auth/login.go
@@ -23,7 +23,9 @@
func HandleLogin(w http.Writer) {
token, err := auth.Validate(r)
- if err != nil {
+ if err != nil && !isRetry(r) {
+ metrics.AuthFail.Inc()
http.Error(w, "unauth", 401)
return
}
Features
Everything you need.
Nothing you don't.
~
Inline Diffs
View diffs for any changed file instantly. Navigate the file list and the diff follows.
#
File Log
Show the last 20 log entries for any file. See who changed what and when, without context-switching.
*
Batch Operations
Mark multiple files with space, then commit, add, or revert them all at once.
>
Keyboard First
Vim-style navigation. Every action is a single keystroke. No menus, no clicking, no friction.
$
Single Binary
Written in Go. Zero runtime dependencies. Download and run — works on Linux, macOS, Intel and ARM.
%
Responsive Layout
Adapts between split and stacked layout based on terminal width. Works in any size terminal.
Keybindings
Muscle memory,
not mouse memory.
jkMove up / down
gGJump to top / bottom
spaceMark / unmark file
dView diff
lView file log
cCommit
aAdd unversioned
vRevert (with confirm)
uSVN update
rRefresh status
hShow help
qQuit
Install
Up and running
in one command.
Quick Install
Downloads a prebuilt binary for your OS. Falls back to building from source.
$ curl -fsSL https://lazysvn.sawirstudio.com/install.sh | sh
Homebrew
Install via Homebrew tap on macOS or Linux.
$ brew tap sawirricardo/tap $ brew install --HEAD lazysvn
From Source
Build from source with Go 1.21+.
$ git clone https://github.com/sawirricardo/lazysvn $ cd lazysvn && go install .
Run
Navigate to any SVN working copy and launch.
$ cd ~/my-svn-project $ lazysvn