svn-rs is an async Subversion client library for Rust. It talks to
svnserve over svn://, optionally tunnels svn+ssh://, and exposes
ra_svn read, report/editor, lock, and commit APIs. It is not a working copy
implementation.
Highlights
- Async-first
RaSvnClientandRaSvnSession - Subversion
svn://support, plus optionalsvn+ssh:// ra_svnread operations, report/editor drives, locks, revision property updates, and low-level commit support- Structured server errors with code, message, file, line, and command context
- Optional
serde,cyrus-sasl, andsshfeatures
Install
[]
= "0.1"
= { = "1", = ["macros", "rt-multi-thread"] }
Optional features:
= { = "0.1", = ["serde", "ssh", "cyrus-sasl"] }
Example
use Duration;
use ;
async
Supported Operations
- Read: revisions, files, directories, logs, locations, mergeinfo, properties, file revs, locks
- Report/editor flows:
update,switch,status,diff,replay,replay-range - Write: revision property changes, lock/unlock, and commit editor commands
Not included:
- Working copy management
- Native TLS for
svn:// - Full OpenSSH feature parity
Authentication And Transport
Built-in svn:// mechanisms:
ANONYMOUSPLAINCRAM-MD5
cyrus-sasl enables Cyrus SASL auth and negotiated SASL security layers.
ssh enables svn+ssh:// by running svnserve -t over SSH.
Examples
Examples live in examples/:
readonlyget_filelistexportlog_retrycommitlockssshsasl
Development
Run tests:
Interop tests against a real svnserve:
SVN_INTEROP=1
API docs: https://docs.rs/svn