We’ve switched the version control system for Stan (my project at Columbia Uni) from Subversion to Git. I was skeptical when everyone told me how great Git was; the move from CVS to Subversion didn’t buy us much.
Git, on the other hand, is worth it. What I’ve liked about Git so far is:
- Local Repository Copies: Every user gets a full copy of the repository. So you can work on a local version of the entire repository before “pushing” any changes to the main repository. (So what was a commit in Subversion is now a commit followed by a push.) This makes it easy to work on the subway, but it also means you can keep things under version control without polluting the public server.
- Speed: Uploading the 40MB Boost C++ sources to Subversion took, roughly speaking, forever (tens of minutes). In Git, it’s super fast. (Both hosted by Google, so I don’t think it’s the network or servers.)
- Branching: What makes local repositories work really well is branching; it’s way easier to branch and merge in Git than in Subversion.
- Reports: All the commands like “git diff” and “git status” give you more information than Subversion, which is actually very helpful.
If you want to read about Git, I can recommend
- Chacon, Scott. 2009. Git Pro. Apress.
It’s free online in every format imaginable from the author.
Ryan tells me that GitHub is the bomb, too, and when Ryan recommends something, I listen (he told me the move to Subversion was minor, by the way). It apparently has a great community and a great way to suggest pushes to other projects. We may move the Columbia project to there from Google Code. (We can’t do the same for LingPipe, at least in their free open source area, because of our quirky license.)