Apache subversion or SVN is one of the most popular Centralized Version Controlling System (CVCS or just VCS). However, the popularity has now been decreasing over the years. But, there are millions of projects all over the world are still being actively maintained by SVN. But what actually made SVN to fall behind Distributive Version Control Systems (DVCS) like Git? Let’s find out.
Cenralized Version Control System (CVCS)
In CVCS, the main repository sits at the top and located in a central server. Multiple project collaborators can check out a single version from of the main repository. But the major drawback of CVCS is that the entire history is available in the local repository. You can only do commits, diffs, logs, branches, merges, file annotations, etc.
Distributive Version Controlling System (DVCS)
Aparently, like CVSC, the main repositiry of DVCS also looks to be located in a central server. But there is a slight difference. A distributed version control system (DVCS) is a type of version control where the complete codebase, including its full version history, is mirrored on the systems of everyone wh clone the main repository.
Hence, if two different persons have cloned the main repository, both of them technically have the same copy of it. In other words, unlike CVCS, DVCS has the ability to maintain multiple copies of the same copy of the codebase and that too in distributed manner. In situations they can be used as backups!
A quick comparison between DVCS and CVCS
|Distributed Version Controlling System (DVCS)||Centralized Version Controlling System (CVCS)|
|It’s a distributed version control system.||It’s a Centralized version control system|
|Git is an SCM (source code management).||SVN is revision control.|
|Git has a cloned repository.||SVN does not have a cloned repository.|
|The Git branches are familiar to work. The Git system helps in merging the files quickly and also assist in finding the unmerged ones.||The SVN branches are a folder which exists in the repository. Some special commands are required For merging the branches.|
|Git does not have a Global revision number.||SVN has a Global revision number.|
|Git has cryptographically hashed contents that protect the contents from repository corruption taking place due to network issues or disk failures.||SVN does not have any cryptographically hashed contents.|
|Git stored content as metadata.||SVN stores content as files.|
|Git has more content protection than SVN.||SVN’s content is less secure than Git.|
|Git is distributed under GNU (General public license).||SVN is distributed under the open-source license.|
DVCS or CVCS: Which one is better?
As far as speed, ease of work, back-up, server dependency and resolution of conflict are concerned, DVCS is a clear winner and I myself would choose to go with this only. But large companies, projects of huge scale still somewhat inclined towards for centralized systems. So, this is more of a decision to be taken by organizations or groups of people based on their needs rather jumping into any sort of conclusion.
However, Google Trend does say that distributed systems are definitely the most used version controlling systems over the period of 5 years.
The following image from Google Trend is a summurized comparison betwen SVN (CVCS, Red line) and Git (DVCS, Blue line) over the peiod of past 5 years. Click on the image or the link below to get a detailed statistical analysis.