Let's understand CVCS and DVCS by differentiating them
Tabulated the differences
As we already know that version control system is broadly categorised into two types CVCS and DVCS, let's get a brief idea of each.
Centralized version control systems — such as CVS (Concurrent Versions System), Perforce, and SVN (Subversion) — centralises the storage of all files and the tracking of changes in a single repository. In a CVCS, developers check out files from this central repository, make changes locally, and then commit their changes back to the central server.
Unlike CVCS, distributed version control system allows each developers to have their own local repository. In a DVCS, the entire repository, including the complete version history, is cloned to each developer's local machine.
Features | CVCS | DVCS |
Repository Structure | There is a single central repository which stores the entire version of history of the project. | Each developer has a complete local copy of the repository which includes the entire version history |
Network dependency | To perform basic operation like commits and checkout it needs constant network connection | Developer's don't need network connection to do these basic operations between local repository and working directory, They can commit, branch, and merge locally, but it needs network for communicating with other repository |
History Tracking | All version history is stored centrally. User's need access to central server to access the history of versions of the files | Each local repository contains the entire version history, allowing users to access historical versions without connecting to a central server. |
Single point of failure | The central server is a single point of failure. If it goes down, developers may face difficulties in collaborating and accessing version history. | No single central server, Each local copy is a full-fledged repository, reducing the impact of a failure. |
Branching and merging | It can be more challenging and maybe require additional coordination | Developers can create branches, work on them, and merge changes more efficiently. |
We can summarize this as - CVCS has a centralised repository where it requires constant network for operations like checkout and commit, unlike DVCS where it allows developer to have their own local copy of repository where they can track back to whichever version they require without accessing remote repository, also the local operation's don't require any network, which makes DVCS an independent working platform, enables effective collaboration and increased redundancy.