Subversion's Features

When discussing the features that Subversion brings to the version control table, it is often
helpful to speak of them in terms of how they improve upon CVS's design. If you're not familiar
with CVS, you may not understand all of these features. And if you're not familiar
with version control at all, your eyes may glaze over unless you first read Chapter 1, Fundamental
Concepts, in which we provide a gentle introduction to version control.

Subversion provides:

Directory versioning
CVS only tracks the history of individual files, but Subversion implements a “virtual”
versioned filesystem that tracks changes to whole directory trees over time. Files and
directories are versioned.

True version history
Since CVS is limited to file versioning, operations such as copies and renames—which
might happen to files, but which are really changes to the contents of some containing
directory—aren't supported in CVS. Additionally, in CVS you cannot replace a versioned
file with some new thing of the same name without the new item inheriting the
history of the old—perhaps completely unrelated—file. With Subversion, you can add,
delete, copy, and rename both files and directories. And every newly added file begins
with a fresh, clean history all its own.

Atomic commits
A collection of modifications either goes into the repository completely, or not at all.
This allows developers to construct and commit changes as logical chunks, and prevents
problems that can occur when only a portion of a set of changes is successfully
sent to the repository.

Versioned metadata
Each file and directory has a set of properties—keys and their values—associated with
it. You can create and store any arbitrary key/value pairs you wish. Properties are versioned
over time, just like file contents.

Choice of network layers
Subversion has an abstracted notion of repository access, making it easy for people to
implement new network mechanisms. Subversion can plug into the Apache HTTP
Server as an extension module. This gives Subversion a big advantage in stability and
interoperability, and instant access to existing features provided by that server—
authentication, authorization, wire compression, and so on. A more lightweight,
standalone Subversion server process is also available. This server speaks a custom
protocol which can be easily tunneled over SSH.

Consistent data handling
Subversion expresses file differences using a binary differencing algorithm, which
works identically on both text (human-readable) and binary (human-unreadable) files.
Both types of files are stored equally compressed in the repository, and differences are
transmitted in both directions across the network.

Efficient branching and tagging
The cost of branching and tagging need not be proportional to the project size. Subversion
creates branches and tags by simply copying the project, using a mechanism similar
to a hard-link. Thus these operations take only a very small, constant amount of

Subversion has no historical baggage; it is implemented as a collection of shared C libraries
with well-defined APIs. This makes Subversion extremely maintainable and usable
by other applications and languages.

Source of Information : Version Control with Subversion For Subversion 1.5 (Compiled from r3036)


Subscribe to Developer Techno ?
Enter your email address:

Delivered by FeedBurner