Ok so we're at yet another crossroad where we can make some lasting decisions. The question at hand is do we keep using old SVN or should we switch to the ever so popular GIT?
Lately I hear a lot of positive things about GIT. Github
is also gaining some tractions with a lot of OSS projects moving there. So I decided to check out the differences between SVN and GIT. Obviously there's a cost involved making the switch and it's now my task to decide whether that cost is worth the gain of using GIT.
I've found four major differences between the two systems.1. GIT is distributed while SVN is centralized.
Personally, I don't see the advantage in decentralizing the main source repository. I've heard you can set up a centralized version of GIT, but that would probably do away with a lot of the advantages.
The only advantage you do have in GIT is that you can commit every change you make and document those changes, without committing to the "central" repository. But it's not something worth very much to me.2. GIT is faster than SVN.
Whilst I'm sure this is the case with huge repositories with thousands of files and a ten year history, we have had no problems in terms of speed in our setup. Our website is "only" about 1500 php files and take another 1000 random other files. We only checkout one version of the website at one time and so at most about 2500 files have to be managed. Not a big deal for SVN, it seems. Our updates, commits and status take seconds, not minutes.
Most of the speedgains in GIT also seem to be coming from having a local repository, opposed to a centralized server and network latency. Since we only work on a LAN there are virtually no latency issues and with only three programmers working on the entire project, SVN doesn't really get excited all that much.3. SVN supports partial checkouts, GIT does not (by design)
We only work with partial checkouts. Switching to GIT means changing the way we work in our source control. I'll concede that our way of using source control might not be the best way of doing so. I honestly have nothing to compare it to. But it seems to work just fine for our case. We have no complaints about it. I could only see a lot of complexity rise from separating each version of the website in a new repository (either that or I'm not understanding the problem at all...).4. SVN creates one file per revision, GIT uses two files for the entire repository
For in as far as that matters at all... I guess we don't really care about this point. Neither do we care about the size (it seems SVN's repository is about 10x to 100x bigger than GIT's).
All in all, for our case, I see no reason to switch. We don't merge very often and most merges are relatively small and no problem for SVN. Conflicts in larger projects don't usually take me more than half an our to an hour. Seeing how that only happens once every few months, I think the impact is negligible.
So, dear reader, please tell me why I should still move to GIT. If there's still a compelling reason to make the switch, please explain it to me. For I have tried to make my case above. You can tell me through twitter (@kuvos
). Also, if there's any error in my findings, please do tell me!