What is it all about?
Apache Subversion is a full-featured version control system originally designed to be a better CVS. Subversion has since expanded beyond its original goal of replacing CVS, but its basic model, design, and interface remain heavily influenced by that goal. Even today, Subversion should still feel very familiar to CVS users.
* Subversion versions directories as first-class objects, just like files. * Copying and deleting are versioned operations. Renaming is also a versioned operation, albeit with some quirks. * Subversion allows arbitrary metadata ("properties") to be attached to any file or directory. These properties are key/value pairs, and are versioned just like the objects they are attached to. Subversion also provides a way to attach arbitrary key/value properties to a revision (that is, to a committed changeset). These properties are not versioned, since they attach metadata to the version-space itself, but they can be changed at any time. * No part of a commit takes effect until the entire commit has succeeded. Revision numbers are per-commit, not per-file, and commit's log message is attached to its revision, not stored redundantly in all the files affected by that commit. * Branching and tagging are cheap (constant time) operations. * Merge tracking, File locking, symbolic links can be versioned. * Executable flag is preserved. * …and a lot more!