I believe the distributed vs centralized source control system debate all revolves around the working environment that the developers use. The various features of distributed source control systems that “are great” that have been mentioned – like the ability to have multiple repositories for test vs development vs each person, etc, that’s not the providence of a distributed source control system, it’s a feature of a good source control system with good branching support. I do that in Perforce all the time – development vs test vs release, with occasional labeling.
I believe that developers like Linus and other Linux developers operate in a more disconnected, more distributed environment than, well, anyone has in the past. A single repository doesn’t make any sense for them, which, well of course means that every source control system that existed in the past doesn’t work for them. Like all good software developers, the went off to write their own tool.
The one feature that they really get is the ability to run disconnected from a server and still commit, which is nice, but not always required for all developers.
However, I worry that, for projects that don’t actually need a distributed system, like say, a “group of people in a single office working on software”, I worry that a distributed source control system would just be a excuse for people to follow bad team development patterns. Sure, they’d all have change control for their own checkins, but I rue when “merge day” appears and everyone breaks each other’s code.
I’d also add that a centralized source repository makes it easy to meet other business (not necessarily development-centric) requirements – single point for backups, long term tracking of code, configuration control, etc etc.
I use Perforce at work. I like it. I have seen continual additions of features in the 3 years I’ve been using it, I’ve had excellent support, and the only time I would think of using anything else is if I had no money and multiple developers, at which point I’d probably use Subversion.