Version control is a subject near and dear to my heart.
Before Smart Bear found its stride in code review, we started out as a version control integration company. My observation was that version control tended to be write-many-read-never, useful for coordinating developers and as a source code backup system.
I figured there was data locked up in these systems that we don't use only because it's difficult to access. Every time a file is changed, what was changed, who did it, and possibly some text explaining the change -- this is interesting info! At one point we had six different products aimed at mining, visualizing, reporting on, and otherwise making accessible and transparent what was previously locked up behind plain-text command-line tools.
To this day, version control system (VCS or sometimes SCM for Software/Source Change Management) integration is a key element in Code Collaborator and much of our time is spent adding support for VCS or racing to keep up with the latest release. We support 13 VCS systems including (in alphabetical order), AccuRev, ClearCase, CMVC, CVS, Git, Mercurial, MKS, Perforce, StarTeam, Subversion, Team Foundation Server, Vault, and Visual SourceSafe.
Of these, the ones getting all the press recently are the distributed version control systems (DVCS) -- Git and Mercurial (also known as "hg"). Of course there are many more (Arch, Bazaar, Darcs, Monotone, and God only knows what else) but these two are in the limelight.
It's a feeding frenzy. My subjective experience is that Git is winning, at least in the buzz-wars. Eric Sink appears to agree. Our own feature-request forum suggests that Mercurial is edging out Git, but further investigation reveals that many of those votes come from anonymous users behind the same firewall, so Git wins again.
But I'm not here to judge; we'll support any system that gains traction.
Which system do you think will win? Is there enough difference between Git and Mercurial (or any others) to allow room for more than one? What about the issues preventing these tools from being practical for larger development teams like humungous repositories, lack of access control, and lack of tool integrations?
Leave a comment and join the conversation!