This systems have different purpose and can’t replace each other.

Over last, well, years? yep years.. i hear “Svn is outdated let’s migrate to new modern Git!”. It is true, that both Git and Svn are source code visioning systems. And you might hear, that git is distributed sytem and svn is client-server system. But, most people do not understand the difference.

Most people think of distributed systems like about client-server systems with a few more features. This is wrong!

Distributed systems have their own limitations. So you need to choose. Basically, you can follow this rules:

  1. If your company work on the only one huge single project. And you need to distribute this work between your company departments/branches/partners – use Git. The obvious example is Linux. You need to consolidate thousands of people to create one single product. Git is excellent for it. Or choose another distributed version control system. There are many.
  2. If you have more than ONE project – NEVER choose Git (nor other distributed system).

Here are limitations of distributed version control systems:

  1. No subprojects. Git can work in reverse way – you can setup one megaproject what will consist of regular projects. But each project will require it’s own repository. In other words – there is no way to checkout subfolder.
  2. No centralized access rules for different projects. The same reason – each project should have it’s own repository.
  3. To overcome point 2(but not 1) you might want to use web service like github and this will turn things from bad to worse – you got a “choice” now:
    1. Pay to github (or bitbucket or wahtever)
    2. Hire someone to keep an eye on your own system like DarcsDen or Gitlab (bitbucket looks cheaper..)
    3. Allow everyone to have read access to your code… well github can be used to PROMOTE your opensource product, once you have one, but not to DEVELOP even opensource product.

If you start new task every 2 weeks (like if you create websites, or small games like we do) you will need to setup new git remote every 2 weeks. Svn can be configured once and for all.