A version control system is considered as an inevitable tool for a developer. It is a repository of files that track and provide control over changes made in a source code. Each and every change made to the source code can be tracked along with who made the changes and why. The main advantage of the system lies in its flexibility in allowing large number of users working on the same source code without sending the data back and forth. Some major version control systems now available include Git, CVS, SVN, Mercurial, Bazaar etc. Here we will be discussing briefly about the Apache Subversion (SVN) system.
Subversion is the most widely adopted version control system that identifies the changes made to the files or directories over time. This was developed by including the missing features of CVS (Concurrent Version Systems). Some of the features of Apache Subversion are:
While CVS only tracks the history of individual files, Subversion tracks changes made in the whole directory. Here both files and directories are versioned separately.
Versioned Copying, Deleting and Renaming
Subversion allows versioned copying, deleting and renaming of operations.
The commit operation in SVN publishes changes made in the files and directories as a single atomic transaction. The operation will not succeed partly. It has to take place completely to determine the success. It means either all the changes get effected in the repository or it will not. This will prove helpful during system crashes, network problems and program crashes.
Choice of network layers
Subversion also acts as an extension module and allows instant access to existing features like authentication, authorization, and wire compression. Apart from the above mentioned features, SVN has innumerable other features as well, which cannot be discussed here due to space constraints.
Various software uses Subversion, revision control system for development.
* TortoiseSVN is a subversion client which comes with TortoiseMerge utility to visually compare two files. We can also manage different versions of source code for their programs.
* VisualSVN server is a freeware Apache Subversion server package for Windows. VisualSVN Server uses isolated built-in Apache HTTP Server to communicate with Subversion clients and web browsers over HTTPS.
* RapidSVN is a cross-platform Subversion client for visuals.
* Mindquarry is an open source collaborative software, which is directed towards small and medium-sized workgroups. Mindquarry server depends on a number of technologies like Apache HTTP server, Subversion, and Java SDK.
* SubversionEdge is a web based environment front end. It also includes an automatic installer, updater, repository management, user management, administration, automatic cloud backup with free storage in CollabNet, CloudForge, and integration with CollabNet TeamForge.
In short, Subversion is a usable and feature rich application, which supports any types of file, from source code to binary.