I took some time last night and played with Git for a bit. Git is a distributed version control system written by Linus Torvalds to manage the Linux kernel. Git recently gained a bit of notoriety because some big projects (in addition to the kernel) like Ruby on Rails are switching to Git.
The whole concept of distributed version control is pretty neat: every developer has a complete copy of the entire history of a project, can make changes on his own local repository (with full history, etc.) and can choose what and when to push back to the rest of the team.
For a single person, like me, the advantages are a little less, although I like the idea of having multiple copies of a full source tree kicking around. The move from Subversion was dead simple, and being forced to pick and choose which modified/new files go into a particular commit is nice. I often find myself running svn commit -m "Some commit message." file1 file2 directory1
(or cvs commit ...
if I’m less lucky). It’s easy to forget the files on the end of the command there and then you end up with a commit whose message doesn’t correspond to the actual changes.
Hooray for jumping on new-software-bandwagons.