LazySVN — A LazyGit-style TUI for Subversion

2 min read Original article ↗

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