Subversion is a free/open source Version Control System (VCS), which means it manages files and directories, and the changes made to them over time. This gives you the ability to recover older versions of your data or examine the history of how you data changed.
Subversion has the ability to operate 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 encourages collaboration. Progress occurs quicker without a single conduit through which all modifications must occur. Because the work is versioned, you don’t need to worry that quality will be a trade-off for losing that conduit. If a change is incorrectly made to the data, you can just undo the change.
Make revisions when needed
If you need to archive old versions of files and directories, recreate them or examine logs of how they’ve changed over time, then Subversion is an excellent tool to use. Subversion is also great if you need to collaborate with people on documents (usually over a network) and keep track of who made which changes. These are the main reasons why Subversion is so often used in software development environments.
In early 2000, CollabNet, Inc. began seeking developers to write a replacement for CVS. CollabNet offered a version control component to its software suite called CollabNet Enterprise Edition (CEE). Although CEE used CVS as its initial version control system, CVS’s limitations were obvious from the beginning, and CollabNet knew it would eventually have to find something better. CVS became the go to standard in the open source community, mainly because there wasn’t anything better under a free license. CollabNet decided to write a new version control system from scratch, keeping the basic ideas of CVS, however, without the bugs and missing features.
By 2001, Subversion had advanced sufficiently to host its own source code, and in February, 2004 version 1.0 was released. In November 2009, Subversion was accepted into Apache Incubator which marked the beginning of the process to become a standard top-level Apache project, which was completed in 2010.
Subversion has several useful features including:
- Commits as true atomic operations (interrupted commit operations in CVS would cause repository inconsistency or corruption).
- Renamed/copied/moved/removed files retain full revision history.
- The system maintains versioning for directories, renames and file metadata (but not for timestamps). Users can move and/or copy entire directory-trees very quickly, while retaining full revision history.
- 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 a cheap operation, independent of file size (though Subversion itself does not distinguish between a branch and a directory)
- Natively client-server, layered library design.
- Client/server protocol sends diffs in both directions.
- Costs proportional to change size, not to data size.
- Parsable output, including XML log output.
- Free software 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
- 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 automatically merging between branches without telling Subversion what (doesn’t) need to be merged
- Changelists to organize commits into commit groups
The corporate world has also started to adopt Subversion. A 2007 report by Forrester Research recognized Subversion as the sole leader in Standalone Software Configuration Management (SCM) category and as a strong performer in the software Configuration and Change Management (SCCM) category.