问题
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.
回答1:
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:
- differences between DVCS and CVCS
- basic VCS concepts (about ClearCase but can be used to illustrates various differences between CVCS and DVCS)
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.
回答2:
Martin Fowler on his bliki:
http://martinfowler.com/bliki/VersionControlTools.html
回答3:
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.
回答4:
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.
来源:https://stackoverflow.com/questions/3224059/do-you-know-of-a-good-pro-con-paper-on-version-control-system-git-mercurial-svn