Posts Tagged ‘source-control’

Post 4 – The basics – Version control:Git vs. SVN

August 19, 2012 Leave a comment

I don’t want to open a comment war here, so I won’t say which is best, I’ll only say that I’ve used Subversion for the past 9 years, and it is a very good solution, but I’m using Git for my current adventure, and I’ll tell you why.

SVN is a service based solution, you need to install and maintain a central service if you want to store your code, and versions are stored on the hosting server.  So if want to be able to check diffs or check-in your code, you need to have access to the hosting service.

Git works differently, Git stores all your history locally in every repository, and every repository is a full clone of all data available (current and past code).  This means you can do checkins and diffs locally without access to a centralized service, meaning you can work offline, and if you want to do diffs it’s as fast as it can be since it’s all local disk access.

I’m no expert on neither solutions, but in my humble opinion Git suits smaller teams who need to work in separate locations, and want to be able to do many quick checkins per day, whereas SVN suits a centralized team where the server is hosted in a LAN and history searches and compare can benefit from LAN speed.  I know there’s also a difference in source control strategy between the two but I haven’t researched it enough to comment on it.

As far as online repositories are concerned, there’s Github if you want a centralized Git repository which everyone can sync to, and I’m sure you can find a good repository for Subversion or do it yourself in EC2.

Installing Git is as simple as a download, and SVN (service) is a little harder but manageable.  SVN client (tortoisesvn) is VERY good, there are good git clients out there from what I’ve heard, but I get all I need within Eclipse so I haven’t even tried to find one.

Bottom line: I chose Git because it fits my current needs, moving to SVN later is a feasible option if I ever feel the need.