•
Commits as true
atomic operations (interrupted commit operations in CVS would cause repository inconsistency or corruption). • The system maintains
versioning for directories and some specific file
metadata (see
Properties). Users can move or copy files and entire directory-trees very quickly, while retaining full revision history (as being implemented by a reference to the original object). • Versioning of
symbolic links. • Native support for binary files, with space-efficient binary-diff storage. •
Apache HTTP Server as network server,
WebDAV/
Delta-V for
protocol. There is also an independent server
process called svnserve that uses a custom protocol over
TCP/IP. •
Branching is implemented by a copy of a directory, thus it is a cheap operation, independent of file size. • Natively
client–server,
layered library design. • Client/server protocol sends
diffs in both directions. •
Parsable output, including
XML log output. •
Open source licensed –
Apache License since the 1.7 release; prior versions use a derivative of the Apache Software License 1.1. •
Internationalized program messages. •
File locking for unmergeable files ("reserved checkouts"). • Path-based authorization. •
Language bindings for
C#,
PHP,
Python,
Perl,
Ruby, and
Java. • Full
MIME support – users can view or change the MIME type of each file, with the software knowing which MIME types can have their differences from previous versions shown. • Merge tracking – merges between branches will be tracked, this allows automatic merging between branches without telling Subversion what does and does not need to be merged. • Changelists to organize commits into commit groups.
Repository types Subversion offers two types of repository storage.
Berkeley DB (deprecated) The original development of Subversion used the
Berkeley DB package. Subversion has some limitations with Berkeley DB usage when a program that accesses the database crashes or terminates forcibly. No data loss or corruption occurs, but the repository remains offline while Berkeley DB replays the journal and cleans up any outstanding locks. The safest way to use Subversion with a Berkeley DB repository involves a single server-process running as one user (instead of through a shared filesystem). The Berkeley DB backend was deprecated in version 1.8.
FSFS In 2004, a new storage subsystem was developed and named FSFS. It works faster than the Berkeley DB backend on directories with a large number of files and takes less disk space, due to less logging. As of version 1.14, it is still marked as experimental.
Repository access Access to Subversion repositories can take place by: • Local filesystem or network filesystem, accessed by client directly. This mode uses the access scheme. •
WebDAV/Delta-V (over http or https) using the module for
Apache 2. This mode uses the access scheme or for secure connections using ssl. • Custom "svn" protocol (default
port 3690), using plain text or over
TCP/IP. This mode uses either the access scheme for unencrypted transport or scheme for tunneling over ssh. All three means can access both FSFS and Berkeley DB repositories. Any 1.x version of a client can work with any 1.x server. Newer clients and servers have additional features and performance capabilities, but have fallback support for older clients/servers. ==Layers==