Distributed revision control vs Centralized revision control

+2 votes
If centralized VCS is more reliable as it provides regular back-up why do we end up using distributed VCS like git most of the time?
Jun 27, 2018 in DevOps & Agile by Hannah
• 18,570 points

5 answers to this question.

0 votes

Distributed VCS uses a peer to peer approach to version control whereas centralized VCS uses client-server approach. Even though centralized VCS allows more access control via folder permissions or by allowing checkout of just the needed sub-tree from the repository and also these systems are backed up regularly allowing more reliable environment, they also have a few disadvantages. Tools like SVN that uses centralized VCS are slow when it comes to transactions and working with tags and branches can be challenging. In such cases Distributed VCS have a priority.

Let’s look at advantages of distributed VCS:

  • Faster and easier to work with when it comes to creating and merging branches and tags.
  • Allows users to work when not connected to a network
  • Common operations such a viewing history, committing etc. are faster as communication is only needed when sharing changes amongst other peers.
  • Allows private work
  • Allows different development models to be used
answered Jun 27, 2018 by Kalgi
• 52,360 points
0 votes

I'm going to list down a few advantages of DVCS which will give you an an idea of why DVCS is better.

  • Allows users to work productively when not connected to a network.
  • Common operations (such as commits, viewing history, and reverting changes) are faster for DVCS, because there is no need to communicate with a central server. With DVCS, communication is only necessary when sharing changes among other peers.
  • Allows private work, so users can use their changes even for early drafts they do not want to publish.
  • Working copies effectively function as remote backups, which avoids relying on one physical machine as a single point of failure.
  • Allows various development models to be used, such as using development branches or a Commander/Lieutenant model.
  • Permits centralized control of the "release version" of the project
  • On FOSS software projects it is much easier to create a project fork from a project that is stalled because of leadership conflicts or design disagreements.
answered Oct 23, 2018 by lina
• 8,220 points
0 votes

Few advantages of Distributes VC over centralized VC

  • Performing actions other than pushing and pulling changesets is extremely fast because the tool only needs to access the hard drive, not a remote server.
  • Committing new changesets can be done locally without anyone else seeing them. Once you have a group of changesets ready, you can push all of them at once.
  • Everything but pushing and pulling can be done without an internet connection. So you can work on a plane, and you won’t be forced to commit several bugfixes as one big changeset.
  • Since each programmer has a full copy of the project repository, they can share changes with one or two other people at a time if they want to get some feedback before showing the changes to everyone.
answered Oct 23, 2018 by Panda
0 votes

Everybody is talking about advantages but there a few drawbacks of using distributes system as well, probably not related to the question but before making a decision its better know the bright and the darker side.

Here are a few drawbacks:

  • If your project contains many large, binary files that cannot be easily compressed, the space needed to store all versions of these files can accumulate quickly.
  • If your project has a very long history (50,000 changesets or more), downloading the entire history can take an impractical amount of time and disk space.
answered Oct 23, 2018 by Kritika
0 votes

The main difference between the two classes is that Centralized VCSs keep the history of changes on a central server from which everyone requests the latest version of the work and pushes the latest changes to. This means that everyone sharing the server also shares everyone’s work. Sourceforge.net uses this type of versioning in their projects.

On the other hand, on a Distributed VCS, everyone has a local copy of the entire work’s history. This means that it is not necessary to be online to change revisions or add changes to the work. “Distributed” comes from the fact that there isn’t a central entity in charge of the work’s history, so that anyone can sync with any other team member. This helps avoid failure due to a crash of the central versioning server. Open source projects, such as Mozilla Firefox, tend to use this type of versioning.

Choose the one best suited for your requirements.

Hope this helps..

answered Oct 23, 2018 by Kanta

Related Questions In DevOps & Agile

0 votes
1 answer

Nginx vs tomcat

Okay let's see, Apache Tomcat is easy to ...READ MORE

answered Jan 30, 2019 in DevOps & Agile by Mausam
0 votes
1 answer

DevOps vs Docker

In recent years, DevOps tools have become ...READ MORE

answered Mar 24, 2022 in DevOps & Agile by gaurav
• 23,260 points
0 votes
1 answer
+15 votes
2 answers

Git management technique when there are multiple customers and need multiple customization?

Consider this - In 'extended' Git-Flow, (Git-Multi-Flow, ...READ MORE

answered Mar 27, 2018 in DevOps & Agile by DragonLord999
• 8,450 points
+2 votes
1 answer
+1 vote
1 answer

Jenkins vs Bamboo

Most of Bamboo's functionality is pre-built. i.e.it doesn’t require ...READ MORE

answered Sep 24, 2018 in DevOps & Agile by Kalgi
• 52,360 points
+5 votes
2 answers

Ansible vs Saltstack

Hello @Hannah, Its always better to know ...READ MORE

answered Sep 25, 2018 in DevOps & Agile by Kalgi
• 52,360 points
webinar_success Thank you for registering Join Edureka Meetup community for 100+ Free Webinars each month JOIN MEETUP GROUP