Centralized vs Distributed Version Control Systems [CVCS vs DVCS]

Topic Basics

We read the concept/benefits/types of Version Control Systems in our last article.

Now, I am going to shed some light on the differences between Centralized Version Control systems and Distributed Version Control Systems.

If you are fairly new to SCM and version control systems, you can direct your browser to this article where we have covered some very commonly used terms in VCS.

So, here you go…

The concept of a centralized system is that it works on a Client-Server relationship. The repository is located at one place and provides access to many clients.

Central Version Control SystemsWhereas, in a Distributed System, every user has a local copy of the repository in addition to the central repo on the server side.

Distributed Version Control SystemsCentralized Version Control is the simplest system with the concept of 1 central repository which servers provides latest code to the all the clients across the globe

Distributed Version Control provides flexibility and has emerged with the concept that everyone has their own repository, they don’t just check out the snapshot of the code – they fully mirror the central repository.

CVCS is easy to understand whereas DVCS has some complex process for beginners.

CVCS is dependent on the access to the server whereas DVCS provides the benefits to work offline. Everything except push and pull the code can be done without an internet connection.

CVCS is easy to administrate and has more control over users and access as it is server from one place.

DVCS is comparatively fast comparing to CVCS as you don’t have to contact the central server for every command. DVCS just takes much time on the first check-out as its mirroring the central repository on your local.

If your project has a very long history and change-sets then downloading the entire history can take an unreasonable amount of time and disk space in DVCS whereas CVCS allows you to checkout only few lines of code if you just need to work on few modules.

DVCS provides a powerful and detailed change tracking, which means fewer conflicts at the time of merge.

DVCS gives an ability that developers can share changes with one or two other members of team at a time if they want to get some feedback before showing the changes to everyone.

The revisions in DVCS are typical big guids (like fa333b7rer96cd6d3b0037d660) – it’s not incremental numbers (which is provided by CVCS) which make them harder to reference and remember.

DVCS provides an advantage wherein if the main server’s repository crashes, you still have a local repository in every developer’s local space from which you can create the main repository.

SVN and CVS are the popular tools of CVCS

GIT and Mercurial are the popular tools of DVCS

I hope now you have a good idea of differences between the different version control systems – Centralized and Distributed.

18 comments… add one
  • Raghav Link Reply

    Nice article…

  • Stanley Link Reply

    Tremendous things here. I’m very happly to see your article.
    Thank youu so much

  • Kam Tramp Link Reply

    Appreciating the time and effort you put into ypur website and in depth information you present. It’s nice to come across a blog every once in a while that isn’t the same outdated rehashed information. Excellent read!

  • Veena Link Reply

    Excellent post. Bookmarked **

  • Carola Link Reply

    Pretty element of content. I simply stumbled upon your weblog and in accession capital to claim that I acquire in fact enjoyed account your blog posts.

  • Stacy Link Reply

    I am so grateful for your blog post.Really thank you!

  • Dyan Link Reply

    Thank you for another magnificent post. Where else may anyone get that type of nfo in such an ideal means of writing?

  • Michael Link Reply

    “Fantastic post. Much obliged.”

  • Mike Link Reply

    This is not a correct explanation

    • Hi Mike,
      Thanks for your feedback.
      Please could you let me know what actually made you think like that?

  • madina Link Reply

    Nice article…

  • Devendra Link Reply

    i appreciate article, but i want raise some question hare.can do work multiple developer on one project like
    Q.1-if Projects A and working developer on this 10 and 2 to 4 developer working on same page but not updating push and pull command in GIT then how to all developer get continuous latest code of this page.
    Q.2- can we work together on SVN and GIT

    • Hi Devendra,
      Sorry for delay in reply – I just missed this comment
      Yes if you really want, you can use git & svn together (please refer https://git-scm.com/docs/git-svn) which provides a bidirectional flow of changes between a Subversion and a Git repository., however it would be recommended to use one VCS as per your project/developers/system/organisation requirements.
      You can then use ‘git svn fetch’ to get all unfetched revisions from the Subversion remote we are tracking.

  • Yunan Link Reply

    Really enjoyed this blog post.Thanks Again.

  • Chad Link Reply

    I’m more than happy to discover this web site. I want to to
    thank you for your time for this particularly fantastic read!!

    I definitely savored every part of it and i also have you bookmarked
    to check out new information in your site.

  • Vincent Link Reply

    I needs to spend some time learning more or understanding more.
    Thanks for great information.

  • Marshall Link Reply

    Way cool! Some very valid points! I appreciate you writing this write-up plus the
    rest of the website is also very good.

  • Rocky Link Reply

    Nice post! Thank you.

Leave a Comment