SVN Client & Subversion Source Control (Commit, Blame, Log, Diff)

SVN Client & Subversion Source Control (Commit, Blame, Log, Diff), a VS Code extension by Zovo

Free SVN client for VS Code that uses your own svn command line. Subversion source control with commit, update, diff, log, blame, branch, switch and merge, one svn status at a time, and nested working copies found once. No sign-in, no network of its own.

Install in VS CodeOpen the Marketplace page

Free, MIT license. Needs VS Code 1.90.0 or newer. Extension ID zovo.zovo-svn-client, version 0.2.1.

Free SVN client for VS Code. It runs the svn command line you already have, so it works with any Subversion server you can reach today. Free, no sign-in, works offline: the extension itself sends nothing anywhere, and only svn talks to your own repository server.

SVN Client in the VS Code Source Control view. Changes lists feature.js (added) and util.js (modified), Unversioned lists debug.log and scratch.txt, and the changelists docs and feature-x each have their own group. The diff editor on the right compares util.js with its BASE revision and highlights the new line 8. The status bar shows r30 ^/trunk.

Real output from VS Code 1.142 on macOS with svn 1.15.0. The working copy comes from scripts/make-fixtures.sh. scripts/gate-vscode.mjs installed the packaged extension in a clean VS Code profile, clicked util.js in the Source Control view and saved the window.

Quick start

  1. Have the svn command line. Check with svn --version in a terminal. If it is missing, SVN Client shows an install page with the command for your system (Homebrew, apt, dnf, TortoiseSVN command line tools, SlikSVN).
  2. Open a folder that was checked out with svn, or run "SVN: Checkout..." with a repository URL. The working copy shows in the Source Control view.
  3. Type a message and press Ctrl+Enter (Cmd+Enter on macOS) to commit.

"SVN: Get Started" in the Command Palette opens a short tour.

Questions people ask

Is SVN Client & Subversion Source Control (Commit, Blame, Log, Diff) free?

Yes. SVN Client & Subversion Source Control (Commit, Blame, Log, Diff) is free and MIT licensed.

How do I install SVN Client & Subversion Source Control (Commit, Blame, Log, Diff)?

Click "Install in VS Code" above, or search for zovo.zovo-svn-client in the Extensions view.

Why this one

People who use SVN extensions in VS Code have written about these problems in Marketplace reviews. This extension was built and tested against each one:

What people wroteWhat SVN Client doesMeasured
"Starts dozens of svn instances when building in the folder. Useless CPU hog" (review, 2020-07-07)File events only ask for a refresh. Many events become one svn status, and a second status never starts while one runs. Excluded folders (node_modules, build, dist, target, out) start no status at all.In the real VS Code gate, a script wrote 5,000 files into a 100,000-file working copy while ps checked every 50 ms: never more than 1 svn status at a time, 2 status runs in all.
"it generates multiple projects. Same change file, different project names." (review, 2025-02-19)Each working copy root is found once, by the root that svn info reports, however many workspace folders sit inside it. Nested working copies and externals get their own entry, labelled by path.Gate: a working copy with a separate checkout nested inside it, opened as 2 workspace folders, shows 2 entries (outer and nested). An externals folder gets its own entry.
"I have installed tortoiseSVN but error Svn installation not found." (review, 2018-10-03)SVN Client looks on PATH and in the usual install folders (Homebrew, /usr/local, TortoiseSVN, SlikSVN, CollabNet, VisualSVN). When svn is missing it shows one page with the install command and a Retry button, not a loop of error messages.Gate: with svn missing, one install page opened and no error message showed. The Windows folders are covered by unit tests, not by a Windows run.

A server that does not answer is stopped after a time limit with a message (zovoSvn.networkTimeoutSec), so VS Code never waits on a dead connection. In the gate, with the limit at 8 s, Update against an address that never answers stopped after 8.9 s with that message, and VS Code stayed responsive.

Features

Source Control

GroupWhat is in it
ConflictsText, property and tree conflicts. Commit waits until they are resolved. The helper files svn writes next to a conflict (.mine, .r12, .merge-left.r2) are not listed as unversioned.
ChangesModified, added, deleted, replaced and missing files (deleted outside svn), and property changes
Changelist: nameOne group per svn changelist, with its own Commit button
UnversionedNew files, with Add and Add to svn:ignore

Buttons and menus: Commit, Commit Selected Files, Commit Changelist, Update, Update to Revision, Revert (with a confirmation; unversioned files go to the trash), Add, Delete, Add to svn:ignore, Resolve (mark resolved, mine, theirs, base), Move to Changelist, Cleanup and Refresh. Explorer and editor tabs show the M, A, D, ?, ! and C letters.

Diff

Click a changed file to compare it with its BASE revision. BASE comes from svn's own pristine copy, so it needs no network. Files with svn:keywords show the same expanded $Id$ on both sides. Binary files and files over zovoSvn.maxDiffMB (20 MB) get a short note instead of a text diff, with buttons to open the file or its history. Nothing is loaded until you ask.

Log

The SVN log view on 200 replayed revisions of an open source project: filters for text, author and dates at the top, a list of revisions with author, date and message, and below it r207 with its full message and 3 changed paths, each with an open link.

"SVN: Show Log" for the working copy, or "Show File History" from the editor or Explorer menu for one file or folder.

Blame

Blame in the editor for index.js: lines start with labels like r23 alice 2013-12-13 and r153 alice 2017-06-20. Lines from the same revision as the line above leave the label empty.

"SVN: Toggle Blame" puts the revision, author and date before every line. Hover a line for the commit message and a link to all changes of that revision. Lines you changed and did not commit say "not committed". Set zovoSvn.blame.mode to inline to show it only after the line the cursor is on.

Branches and tags

The revision graph: trunk from r1 to r209, feature-a copied at r81 with changes up to r87, release-1.x copied at r157, tag v1.1.0 on trunk and v1.0.0 on release-1.x, with dashed lines from the revision each branch was copied from.

Shelving

"SVN: Shelve Changes" saves your local changes as a patch in the extension's storage and reverts the files. "SVN: Unshelve" brings them back with svn patch. It works with every svn from 1.7, not only with the experimental shelving of svn 1.10 to 1.14. Binary changes cannot go into a text patch, so a shelf with them is refused before any file is touched.

Changelists

The SVN Changelists view in the Source Control side bar lists each changelist and its files. Drag files from it or from the Explorer onto a changelist to move them there, or onto "No changelist" to take them out.

Large working copies

Settings

SettingDefaultWhat it does
zovoSvn.pathemptyFull path of svn. Empty: PATH and the usual install folders. A workspace cannot set it.
zovoSvn.statusDelayMs1000Quiet time before one status run
zovoSvn.statusDepthinfinityinfinity, immediates, files or empty
zovoSvn.excludenode_modules, .git, build, dist, target, out, .gradle, __pycache__Folders that start no status and whose unversioned files are not listed
zovoSvn.detectDepth3Folder levels searched for nested working copies
zovoSvn.showUnversionedtrueShow the Unversioned group
zovoSvn.maxListedFiles5000Most files listed per group
zovoSvn.maxDiffMB20Larger files open without a text diff and without gutter marks
zovoSvn.commandTimeoutSec120Time limit for local commands
zovoSvn.networkTimeoutSec300Time limit for update, commit, log, blame, switch and merge
zovoSvn.statusTimeoutSec300Time limit for svn status
zovoSvn.blame.modeguttergutter or inline
zovoSvn.blame.maxMB10Largest file for blame
zovoSvn.log.pageSize100Revisions per page in the log
zovoSvn.refreshOnFocustrueOne status run when the window gets focus
zovoSvn.askForRatingtrueAsk once for a Marketplace rating after the extension worked for you on 2 separate occasions. "Later" asks one more time after 7 days, "No thanks" never again. Never after an error.
zovoSvn.showSupportLinkstrueThe small Rate, More free tools and Sponsor links at the bottom of the log view

Privacy and safety

Free and Pro

Every feature above is free in this version. A later version may offer Zovo Pro for the revision graph, shelving and the changelist manager. Zovo Pro is USD 19 once on GitHub Sponsors and unlocks the Pro features in every Zovo VS Code extension. Status, commit, diff, update, log, blame, branches and merge stay free for good. There are no ads, no countdown and no popups.

Limits

Not affiliated

SVN Client is an independent extension by Zovo. It is not made by, and does not replace, any other publisher's SVN extension. Subversion is a trademark of the Apache Software Foundation.

License

MIT. No third-party code is bundled.

Guides

Install SVN Client & Subversion Source Control (Commit, Blame, Log, Diff)

Click the button to open VS Code and install it, or press Ctrl+P (Cmd+P on macOS) in VS Code and run ext install zovo.zovo-svn-client.

Free, MIT license. Needs VS Code 1.90.0 or newer. Extension ID zovo.zovo-svn-client, version 0.2.1.

Source code and issues are on GitHub.

All our VS Code extensions

Zovo Pro and support

Zovo Pro: USD 19 once, every Zovo viewer. It turns on the Pro tools in this extension and in the other Zovo extensions you use. The free features stay free.

After a card payment your license key shows on the next page. Paste it with the command "Zovo Pro: Enter a key".

You can also support the work with no Pro:

Need your format supported?

Open a format request with a sample file, and I reply there whether it can be done. For USD 299 once, through this GitHub Sponsors tier, I add your file format or a missing feature to this extension, with tests, within 7 days.