In any software development project, there comes a point of time when communication between the participants becomes a bottleneck. Developers have to push changes over a period of time, so it is imperative that everyone is on the same page, making sure everybody has the latest version of some crucial bit of information.
As the scope of a project grows, so does the number of people involved with it. So, it gets a little bit complex over time. One of the best ways to handle this complexity is through the use of version control systems.
A version control is a central repository that stores changes made to a file or a set of files over time, so that the various members of the team always have easy access to the latest iterations of the project related files or documents. We take a look at two popular version control systems – SVN and VSS.
What is SVN?
Subversion, commonly abbreviated as SVN, is a free, open source version and revision control system distributed under the Apache License used to maintain the source code of the Apache projects.
SVN is a centralized version control system which maintains a central repository for storing information in a typical hierarchical format of files and directories.
The repository stores the full history of code changes in a central server. If a developer wants to connect to the repository and access a file for making changes to that file, he has to pull the file from the central repository to his own machine, and then add or modify files and push the changes back to the repository.
It automatically updates the local working copy of the project you’re working on in order to incorporate the changes from anybody who is working on the project. This allows for anyone to access the latest updated files you’ve pushed to the central repository.
What is VSS?
Visual SourceSafe (VSS) is a distributed version control system by Microsoft that automates the process of file tracking and version control. Designed for small software development projects, VSS is typically used in an integrated mode with Microsoft Visual Studio. Like SVN, it maintains a central database where all the project related files and documents are stored along with the history of the changes to the files over time.
Basically, it identifies, organizes, and controls changes to the software during its development and maintenance. It maintains multiple versions of a file, including a record of changes, and archives and tracks old versions of files. VSS was initially a Software Configuration Management (SCM) service, but over time, transformed into a source code management system. VSS allows you to store all types of files, including code, graphics, documents, DLLs, icons, help files, and so on. These files are stored in the VSS database in ‘projects’. It acts as a common repository where everyone can save their project related files and also access files from it.
Difference between SVN and VSS
Tool of SVN and VSS
– Microsoft Visual SourceSafe (VSS) was one of the Microsoft’s most popular source control and management tools that is typically used integrated with Microsoft Visual Studio. The tool was originally developed by a company named One Tree Software which was later acquired by Microsoft. VSS is discontinued service now.
SVN, on the other hand, is a free, open source version and revision control system distributed under the Apache License. SVN is reasonably easy to use and the workflow is very similar to other version control systems out there, so those who are already familiar with version control systems will have no trouble transitioning to SVN.
Atomic Commit
– Atomic commit is probably one of the best practices in source code management systems, which is an indivisible change that commits multiple files as a single check-in. This is typically included as core functionality in SCM implementations.
One of the reasons why developers prefer SVN over other SCM systems such as VSS is that SVN allows atomic commits. This means when you commit something to SVN, either all you want to commit goes in or nothing at all. The repository does not go into an inconsistent state, if some operation is interrupted midway. However, VSS commits are not atomic.
Operation Mode
– Another fundamental difference between the two version control systems is that SVN’s mode of operation is non-locking. This means multiple users can access and modify the same file while working on their working copies without creating any conflict.
SVN prevents any conflicts between multiple users operating on the same working copy. Nothing is really locked in SVN and any member of the team who has access to commits can commit changes to any file they want at any point of time. With VSS, on the other hand, there is no guarantee that changes to the same file do not conflict with each other. Users can get locked when trying to commit changes to a common file at the same time.
SVN vs. VSS: Comparison Chart
Summary of SVN and VSS
One of the major differences between SVN and VSS is that the SVN’s mode of operation is non-locking, which means multiple users can commit changes to a file at the same time, without raising any conflict whatsoever.
SVN is a centralized version control system which maintains a central repository of full history of code changes over time, making it easy for anyone to add, modify or delete any file at any point of time. VSS, on the other hand, is a discontinued service from Microsoft which once was one of the widely used source control tools out there.