Tuesday, July 07, 2009 -
Many, many people have asked why I moved our Source Repository to Git/Github and it’s hard to explain other than to say that for Open Source – Git is a very nice option because it very much enhances the “collaborative” experience in that merging code from others is not only simple – it’s foundational.
The only way that seems to capture the main elements of Git is that it’s peer-to-peer source control with a heavy dose of Social Networking. There is no centralized source – everyone has their own disconnected “repository” (which is called a “branch” in Git parlance) that you merge when it makes sense to. When you do run a merge, your version history is merged as well – making a very weird “Facebook meets Source Control” kind of experience.
Git as Source Control Management
I got a tweet tonite from Mohammed Meligy that I really want to address:
@robconery why (in an organization) would I choose Git over SVN ?
And the answer is: I have no idea. Git has its strengths for Open Source, to be sure, but for the Enterprise I just don’t know and I would say you should probably be afraid. I have a lot of opinions about this as both developer and Lead Geek, but I think I’ll summarize it here for you:
Source Control is something you don’t want to mess with and if your system is working for you – that’s a perfect, irrefutable argument. TFS is light years ahead of anything Git can provide in terms of workflow and process management – and if these things are important and working for you – then you have no reason at all to change; in fact you have many reasons not to.
Subversion is a good system to – it just happened that in our case I needed more than one repository and Github fit exactly what I wanted.
Working With Github and SubSonic
If you want to know how to work with Github (as far as SubSonic is concerned), I made a quick (10 minute) screencast on how to get up and running on Git, and then how to fork/push our source. This is a really bare-bones intro, and I’ve also added it to our wiki.
Double-click for full screen