Everyone tells me that Git is better than SVN. And for a lot of things that’s probably true. Git has some practical issues though. Committing binaries would make your repo huge – because when you clone the repo it downloads every iteration of the file – not just the latest one like in SVN. You can get around this by speficying the depth to clone, but you’re kind of losing one of Git’s great strengths if you do that.
It seems a lot of the features people praise Git for are features of GitHub – not Git itself. GitHub is awesome. One of the features they have is the ability to check out, and commit Git repos as SVN. This is a great feature and makes transitioning projects to it simple.
This was one of the big hurdles for me because I tend to make repos for smaller projects – like Bootil or Holly – and have them external’d into larger projects (like gmod). So being able to ‘external’ them as SVN repos gives me all the benefits of Git while retaining them in my current SVN codebase unchanged.
I did a similar thing with the Garry’s Mod game code. I created a Git repo containing the light files, such as the Lua and the HTML. Then in my existing SVN repo I created externals to each of the specific folders. So the SVN handles the grunt of hosting the binaries – while the main code is on GIT – and the community can offer up pull requests.
The SVN interoperability was a deal breaker for me and I’ve already moved most of my stuff over to GitHub with no real inconvenience to any of my existing projects that use them.