views:

197

answers:

4

It seems to be quite hard to find good references about the pros and cons of these Version control systems.

If someone can make a short and neat paper about it, mirror it and post it here, I think a lot of people would be less confused.

What version control system should I use ? I think it depend on the project and on the number of people working on it. However there are some commonly accepted facts, for instance: Git is the fastest, CVS is stable and tested, SVN is simple and Mercurial seems more Windows friendly.

Moreover, the paper should present evidences, link to benchmarks and explanation for each statement.

I've written on stackoverflow because most of the readers here should be experienced programmers and know where to ask to get proper contributions OR even write the paper (that would be awesome).

Note: This question is not about the relative merits of one tool over another (there are many post on those topics), but more about the objective criteria which can be used to differentiate them and used to choose one for your project.

+3  A: 

The DVCSAnalysis from Google is a good start.
(Well, Scott Chacon, Git champion and one of the guys behind GitHub, disagree in the comments:

This analysis is out of date, and was in fact very out of date when it was posted. See my comments on ycombinator about it
My opinion is that Git and Mercurial are superior in nearly every way to SVN/CVS - I think almost every developer who has used both systems in any meaningful way would agree.

As to Git/Hg, they are largely comparable and either would be a good choice, though Git seems to have a bit of a market share advantage, FWIW.

Any sources/references about that market share, Scott?
Perhaps the number of repos/users declared in social coding collaboration sites?

)

Beside that, I have written some general posts on the topic:

Those SO answers may not be "tool-specific" enough, but at least can point you to the relevant features each class of those Versioning system provide.

On the benchmark front, you have the interesting question from Jakub Narębski on network benchmarking, as well as his answer for Git.
That may be too "Git-centric", but can also be used to ask the right questions when deciding what kind of versioning tool you want for your project.

VonC
The DVCSAnalysis is the kind of paper I was looking for, very good analysis from google.
benjamin
This analysis is out of date, and was in fact very out of date when it was posted. See my comments on it here: http://news.ycombinator.com/item?id=577976My opinion is that Git and Mercurial are superior in nearly every way to SVN/CVS - I think almost every developer who has used both systems in any meaningful way would agree. As to Git/Hg, they are largely comparable and either would be a good choice, though Git seems to have a bit of a market share advantage, FWIW.
Scott Chacon
@Scott, thank you for your feedback. I have integrated it in my answer. **But**: 1/ regarding Windows, its [supports](http://code.google.com/p/msysgit/updates/list) it still [shaky at best, see this SO answer](http://stackoverflow.com/questions/1704565#1704687). 2/ And the git checkout file vs. branch still trips a lot of people (see [this SO answer](http://stackoverflow.com/questions/2961240#2961348))
VonC
@Scott: 3/ (unrelated) I still don't see right away what exact version of Git GitHub server is running with (see my [support demand](http://support.github.com/discussions/repos/2156-what-version-of-git-is-running-on-github-server) and your [more recent tweet](http://twitter.com/chacon/status/12849938615)). For an admin like me, that matters ;)
VonC
$ git --versiongit version 1.7.0.2
Scott Chacon
as for sources, references about market share, it basically has to be anecdotal. you can compare traffic to selenic vs git-scm or github vs bitbucket/google-code numbers, but i'm just basing it off of what people tell me. android and kernel stuff has made a lot of devs choose git and i am told that all the time, even by people who like hg more. perhaps i'm wrong, but it's hard to tell and i think most of the anecdotal evidence points to git being more commonly adopted.
Scott Chacon
@Scott: thank you for the GitHub version: I have updated the [SO question which is the reference on that topic](http://stackoverflow.com/questions/1913677#1915063). An always up-to-date Git version status somewhere on the GitHub page (or GitHub support page) would be neat ;)
VonC
@Scott: "i'm just basing it off of what people tell me." Would it be unfair to say, considering your background and current professional activity, that you are more "tuned" to hear or listen to data that comfort your views? That doesn't mean you are wrong or right, just that we need some external references (a bit like in this [Wikipedia policy page](http://en.wikipedia.org/wiki/Wikipedia:Citing_sources) ;) )
VonC
@VonC - it's possible - i considered this before i posted, however, you might be surprised how often people approach me just to tell me that they disagree with me and let me know how much they dislike Git. so again, it's entirely anecdotal, but even the pythonistas and windowers and others whom might tend to favor Hg seem to think that Git is a bit more popular (even to their chagrin). take it with a grain of your favorite seasoning spice.
Scott Chacon
@Scott: thank you for all this feedback and your answers. Right now, what gives me hope in a larger Git adoption is [Eclipse move toward supporting Git for all its projects](http://stackoverflow.com/questions/3097598/version-control-for-one-man-project-using-eclipse/3097799#3097799).
VonC
+4  A: 

When it comes down to it, "which vcs is right for me" is a heavily subjective question that depends on a lot on the parameters of your workflow needs, your project needs, and just your group's general style.

If you're looking for details of how the empirical features of each VCS compare, take a look at the following charts:

http://en.wikipedia.org/wiki/Comparison_of_revision_control_software

Really though, anything beyond that will be a subjective opinion - even if you do empirical testing, the best you'll get is a set of different comparisons that point out that one VCS excels in a given area and another in a different one. How you rank those areas in terms of importance is up to you.

Amber
Good general link. +1
VonC
That's a good place to start.
benjamin
+5  A: 

Martin Fowler on his bliki:

http://martinfowler.com/bliki/VersionControlTools.html

Sylvain M
Good reference. +1
VonC
Very interesting
benjamin
A: 

If you like to get to know Git, Linus Torvalds TechTalk at Google is very good 1. It's (of course) very pro git and against anything else but it's fun to watch.

Steven Mohr