Version control systems(VCS) are a category of software tools that helps record changes to files by keeping a track of modifications done to the code.

Use of Version Control System:

  • Repository: It contains all the edits and historical versions (snapshots) of the project.

Types of Version Control Systems:

Local VCS

It is one of the simplest forms and has a database that kept all the changes to files under revision control. RCS is one of the most common VCS tools. It keeps patch sets (differences between files) in a special format on disk. By adding up all the patches it can then re-create what any file looked like at any point in time.

Centralized VCS

It contain just one repository and each user gets their own working copy. You need to commit to reflecting your changes in the repository. It is possible for others to see your changes by updating. Two things are required to make your changes visible to others which are: Commit and Update.

The benefit of CVCS makes collaboration amongst developers along with providing an insight to a certain extent on what everyone else is doing on the project. It allows administrators to fine-grained control over who can do what.

It has some downsides as well which led to the development of DVS. The most obvious is the single point of failure that the centralized repository represents if it goes down during that period collaboration and saving versioned changes is not possible. What if the hard disk of the central database becomes corrupted, and proper backups haven’t been kept? You lose absolutely everything.

Distributed VCS

It contain multiple repositories. Each user has their own repository and working copy. Just committing your changes will not give others access to your changes. This is because commit will reflect those changes in your local repository and you need to push them in order to make them visible on the central repository. Similarly, When you update, you do not get other’s changes unless you have first pulled those changes into your repository.

To make your changes visible to others, 4 things are required:

  • Commit

The most popular distributed version control systems are Git, Mercurial. They help us overcome the problem of single point of failure.

Developer with 3 yrs of industrial experience in developing scalable web applications.