5

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.

Joel Coehoorn
  • 362,140
  • 107
  • 528
  • 764
benjamin
  • 53
  • 2
  • 4
    SO is not a really a technical conference; we don't do "papers", we do answers. – Amber Jul 11 '10 at 18:06
  • I just tried to "tone down" the controversial aspect of your -- legitimate -- question. If you think I have failed to do so, and that I have altered it too much, please revert to the previous version or edit it again. – VonC Jul 11 '10 at 18:28
  • Amber: This is true, I've abused of SO, forgive me. VonC: Well, you've changed a detail but you've made a mistake, I was not implicitly praising windows, it was just a nasty blink from a BSD user to Linus. However I don't mind, your modified version is good and more appropriate. Thank you. – benjamin Jul 11 '10 at 20:33

4 Answers4

5

Martin Fowler on his bliki:

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

sly7_7
  • 11,781
  • 3
  • 36
  • 53
4

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
  • 446,318
  • 77
  • 595
  • 531
3

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.

Community
  • 1
  • 1
VonC
  • 1,042,979
  • 435
  • 3,649
  • 4,283
  • The DVCSAnalysis is the kind of paper I was looking for, very good analysis from google. – benjamin Jul 11 '10 at 21:17
  • 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=577976 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. – Scott Chacon Jul 17 '10 at 03:03
  • @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 Jul 17 '10 at 08:41
  • @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 Jul 17 '10 at 08:45
  • $ git --version git version 1.7.0.2 – Scott Chacon Jul 17 '10 at 16:23
  • 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 Jul 17 '10 at 16:27
  • @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 Jul 17 '10 at 16:55
  • @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 Jul 17 '10 at 18:03
  • @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 Jul 18 '10 at 02:01
  • @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 Jul 18 '10 at 03:11
0

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
  • 1,141
  • 6
  • 17