Today I was listening to a recent episode of Hanselminutes, where Scott Hanselmann interviewed three guys from Planet Argon about the source control tool Git. I originally heard about Git some time ago and didn’t pay it any heed - having heard the show and done some follow-up research, I’m beginning to think that Git would be worth further investigation.
Unlike many other tools, Git has no requirement for a central server - instead, every developers working set is a full repository from which you check out, and into which you commit. Being entirely local, there is no requirement for any network connectivity - you can commit to your hearts content even at 30,000 feet in an airplane.
Coordination between developers is achieved by pulling and pushing commits between repositories. Many Git users do have a central repository, but this is purely a convenience issue rather than an architectural one.
Internally, Git uses SHA-1 hashes as unique identifiers on various kinds of internal object, each representing an aspect of the repository - a file, a directory, a commit and so on. For a brief overview of how this works, check out Git for Computer Scientists
The internal design of Git is extremely elegant - there are just a few basic concepts, but they can be combined in ways both useful and clever.
Ahh, if only I had the spare time to dive into the source for a week to see how it all works … :-/