SubVersion
| Create a SubVersion account - Click Connect. |
|
About SubVersion
Subversion is a free/open-source version control system. That is, Subversion
manages files and directories over time. A tree of files is placed into a
central repository. The repository is much like an ordinary file server, except
that it remembers every change ever made to your files and directories. This
allows you to recover older versions of your data, or examine the history of how
your data changed. In this regard, many people think of a version control system
as a sort of “time machine”.
Subversion can access its repository across networks, which allows it to be used
by people on different computers. At some level, the ability for various people
to modify and manage the same set of data from their respective locations
fosters collaboration. Progress can occur more quickly without a single conduit
through which all modifications must occur. And because the work is versioned,
you need not fear that quality is the trade-off for losing that conduit—if some
incorrect change is made to the data, just undo that change.
Subversion Fetures
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 time.
Hackability
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.