Apache Subversion, or formerly Subversion, in short SVN is a system in charge of managing and verging source codes. It replaces an older CVS tool, with which it retains a similar way and style of work but tries to get rid of its shortcomings, such as the impossibility of moving or copying directories, the time and space demands of branching and tagging.

SVN has a very elaborated documentation named Version Control with Subversion and is freely available.

Characteristics of SVN

There are multiple access methods for the repository in SVN. It belongs to the category of version management tools, it is developed by CollabNet, Inc., it is released under a licence enabling its free commercial use and has freely accessible source codes.

SVN has been created to replace the open-source CVS system, which was widely used. It inspired the SVN development a lot, but is more flexible and easier to use.

SVN can be used on many platforms, including Windows. It has two main parts, a server and a client. The client part has to provide tools for working with versions directly within the working directory and providing a communication with the server part. The server part then looks after the central storage – the repository. This can be accessed via the native protocol svn://. Several client tools are available, the simplest ones, the command line, the web interface and complex tools integrated to the OS GUI. The user has the option of choosing which method is optimal for him.

Key features of SVN

  • Repository. The central storage that allows the project to be organised and its versions to be managed. It is physically stored on the server’s file system. It is accessed via Repository Access Layer and the administration is managed by client tools.
  • Branch. The branch should be used to the organisation of the repository, an analogy with the directory could be used. If a branch is picked up from it, a directory structure exact to the branches in repository will be created on client.
  • Revision. Each change has a serial number – a revision. This marking helps to monitor changes in branches and in time. Any change is making a new revision which contains information about changes, their author, note and time.
  • Working copy. Using a working copy of the data from one of the branches, you can make changes to the current version on the local client’s hard drive and then load them back to the repository using the commit.
  • Commit. The most commonly used change for working with repositories. It is sending of changes made since the last commit to the repository. In case of an error, the commit does not appear to other users and no new revision is created.
  • Conflict. In the event of a conflict, the same object that is currently being committed is changed simultaneously by another user and is located in a repository in a different form than the default revision of the working copy. In this case, the commit cannot be performed.

The advantages of SVN

  • Simple orientation in versions. Thanks to the single revision number, it is easy to see what was a part of a build. At the same time, the revision orientation is often more simple than data orientation.
  • Control of changes. It is simple to see who created the specific branch, when and why.

The disadvantages of SVN

  • Tracking the older versions. There is no simple way to bring together all versions of on source document if you are trying to track which branch contains a specific change.
  • Client-side file copies. For each check-outed file a copy is stored in a subdirectory, which takes up extra space and doesn’t save too much time.