Git Magic
www-cs-students.stanford.edu
www-cs-students.stanford.edu
I can see why git may be much better than svn for large groups of developers, but is git really that much better for small groups? Are people really spending much time on revision control?
Personally I wanted to learn Git as a couple of projects I track are now hosted in it. So I took the nuclear option and started using it to version control ~/ and power my backup system.
Okay I'll leave you with this. It is Linus' speech that convinced me to give Git a shot. Listen to it and if it doesn't make you try Git, then I guess you don't need Git.
http://video.google.com/videoplay?docid=-2199332044603874737...
I don't like / use svn's branching support. So, after every release I'm reluctant to start any major development. What if I've pulled the guts out of my app, and a critical bug is discovered?
Clearly not a problem if I have either a stable branch that I can apply the bug fix to, or a branch for whatever major feature I'm working on.
It's quite possible that this is my shortcoming and has nothing to do with svn vs git. But, if switching to git (which seems to have great branching support) is what it takes for me to adopt a better practice then I'm for it.
Anyway, I think SCM is a major part of running a software startup. It has too much of an effect on operations not to be important.
What you need to figure out is which tool (git, svn, or something completely different) matches with your style and needs as a developer or group of developers. The best version control is the one that becomes part of your natural workflow so you use it without thinking of it as an extra step that you constantly have to do. Because if that happens, you'll just stop using it.
Git's branching capabilities work well for someone who needs to work on multiple independent features or try out new ideas that may or may not work out. All of which is usually what's going on in a startup. It's something that comes as part of the tool instead of having to be worked up in a series of processes that you don't either have to time or (painful) experience to come up with yourself.
This is a huge win over the hacky way things are done with svn externals or svn + patches.
So that's what git does. Thanks for the one sentence explanation.