I just stumbled across a very interesting talk by Linus Torvalds at Google Tech Talks (video at the end).
This is from 3 years ago, so pretty much just the beginning of the widespread use of git (j just look at how github exploded with popularity). Linus’s viewpoint is quite strong, he hates CVS / SVN / Perforce, or anything using the centralized model. After using git for the past year for pretty much all my projects, I never want to use anything but git for version control! It’s simply amazing. I started using it after a bit of playing around with svn, but git is just… better. The good thing with git is that it encourages micro-commits (commit even just after couple lines of code change). This means you have a very clear and concise history of all your code, and can easily go back and see what changed and when, or when something breaks, easily do a local revert.
Currently, I’m in the unfortunate position where I have to use Perforce at my job. After using a distributed VCS like git, I cannot see at all the appeal of a centralized model that Perforce/svn/cvs provide. It makes me much less inclined to experiment with my code. If I do a commit, it has to go the central repository straight away, I can’t just do local commits and play around until I get something working they want I want it to. Creating a branch in centralized CVS’s is something I don’t want to even touch, after having gotten used to git’s incredibly fast local branching. I simply don’t want to expose to people stuff that’s possibly broken or not ready yet. I like doing many local commits on my machine, testing ideas out, and only commit when I get everything working. With Perforce, sometimes I can’t even bother to experiment with a new feature as I don’t want to get into a scenario where I introduce changes, the code breaks, and then I have to manually revert. It’s all so much easier with git!
Please, if you are using a centralized CVS, please consider switching to git. You can still very easily use it in a centralized model, while still retaining all the benefits like incredibly quick diffs and history, local branching, or awesome tools like git-bisect.
If you’ve decided to use git, and are computer science inclined (or just like to know how things work), read this awesome article about how git works internally. My understanding of git is much better after having read that!
Finally, here is the video of Linus Torvalds discussing git, and feeling sorry for Google employees having to use Perforce :P