The Needs that Version Control Systems Serve

July 30, 2014

version-control-repository-codeBeamer-ALM-software-336x336 The Needs that Version Control Systems Serve software development Version control systems are divided into two groups: “centralized” and “distributed”. Centralized Version Control Systems (CVCSs) and Distributed Version Control Systems (DVCSs) serve different needs. Comparing Centralized Version Control Systems to Distributed Version Control Systems is like comparing hammers and screwdrivers.

Centralized Version Control Systems (CVCSs): The One True Source

Centralized Version Control Systems (CVCSs) were developed to record changes in a central system and enable developers to collaborate on other systems. Centralized Version Control Systems (CVCSs) have a lot to offer, however it also has some serious disadvantages also, but lets start with the benefits.

Some Benefits of Centralized Version Control Systems (CVCSs)

  • Relatively easy to set up
  • Provide developers with a clear view (everyone knows at some level what the others do)
  • Enable admin to control the workflow (who to do what)

Disadvantages of Centralized Version Control Systems (CVCSs)

  • If the main server goes down the developers can’t save versioned changes (single point of failure)
  • Remote commits are slow
  • Unsolicited changes might ruin the development
  • If the hard disk of the central database becomes corrupted the entire history could be lost

Distributed Version Control Systems (DVCSs)

Distributed Version Control Systems (DVCSs) don’t rely on a central server. It allows developers to „clone” the repository (with the same metadata as the original has). Develops will have the entire history of the project on their own hard drive.

It is often said that working with Distributed Version Control Systems you can’t have a single “central” repository. This is not true! Distributed Version Control Systems don’t prevent you from having a single “central” repository. Distributed Version Control Systems just provide you with more options.

Advantages of DVCSs over CVCSs

  • You do local commitments. The full history is always available.
  • You don’t need to access a remote server and that makes your work very fast.
  • You can push your changes continuously.
  • Saves time, especially with ssh keys
  • Good for projects with off-shore developers since they have their own repositories.

Downsides of Distributed Version Control Systems (DVCSs)

Some developers think that Distributed Version Control Systems (DVCSs) is the next step in the evolution of software configuration management (SCM). However, it has some downsides as follows:

  • It may not be so obvious who did the most recent change
  • The file locking doesn’t allow different developers to work same piece of code simultaneously. It helps avoid merge conflicts but slows down the development.
  • DVCS enables you to clone the repository that could cause source code leakage if a nasty programmer gets hold of it.
  • Managing non-mergeable files is contrary to the DVCS concept
  • Working with a lot of binary files, requires a huge amount of space and developers can’t do diffs.

As to whether Centralized Version Control Systems (CVCSs) or Distributed Version Control Systems (DVCSs) is best choice for your team and projects depends on the type of your project and organizational structure.

 

facebook The Needs that Version Control Systems Serve software development twitter The Needs that Version Control Systems Serve software development google The Needs that Version Control Systems Serve software development linkedin The Needs that Version Control Systems Serve software development

Related E-Book

Agile Software Development Guide

First Name

Last Name

Email Address

Company

Phone Number

Industry

Eva Johnson

Written by

Eva is an Economist (MSc) and also holds an MBA in Marketing Communications. She has over 10 years of experience in journalism, digital media communication and project management working with several multinational companies and governmental institutions. You will find her blogs posts on a variety of subjects from Agile-Waterfall Hybrid, Scrum to DevOps.

Eva Johnson has written 132 posts for Intland Software.

2 Comments. Leave new

The listed downsides to DVCS are a bit unfair, me thinks.

“The” most recent changes, that notion either doesn’t make sense or it can be found in the “one true source” node of a DVCS if you want to support it.

File locking in a DVCS, apart from the inherent contradiction, who still uses file locking in version control?

The risk of source code leakage isn’t specific to DVCS but inherent in the sharing of information among team members.

Binaries in any VCS are inherently non-mergeable an non-diffable, I don’t see how that is a DVCS disadvantage either.

Reply

Dear Yanic,

Thanks for your feedback. I guess a list like that can ever be “fully completed”. However, you can see there the benefits too.

Reply

Leave a Reply

Your email address will not be published. Required fields are marked *