From Git SCM Wiki
Jump to: navigation, search
A collection of how Git compares to other version control software:
Git Wiki comparisons:
Git comparisons found on the web:
- Git vs. Mercurial - comparison between Git and Mercurial as a part of a blog series about version control.
- Git vs SVN - Which is Better?
- Better SCM Initiative: Comparison by Shlomi Fish (includes all systems that make sense, and some more).
Note that as of 1 Dec 2008 information about Git contained there is inaccurate.
- Version control systems comparison Another interface to Better SCM database.
- Blogpost comparing Git, Mercurial and Bazaar size
- Comparison of revision control software table at Wikipedia.
- InfoQ comparison of Git, Hg, and Bzr. (May 2008)
- RcsComparisons rev. 98 (user-oriented table, removed because it was of limited use), RCSChoices (table of the decisions), SCMComparisons (lists of features) and BzrVsGit at Bazaar-NG wiki.
- Quick Reference Guide to Free Software Decentralized Revision Control Systems by Zooko
- Comments on Open Source Software / Free Software (OSS/FS) Software Configuration Management (SCM) Systems by David A. Wheeler, (April 10, 2004; lightly revised May 18, 2005). Git added at the very end of article.
- Source-code management on Linux - large list of SCMs with descriptions at LinuxMafia.
- Mercurial 0.5b vs git is an old (before pack files in git) post by Matt Mackall benchmarking Mercurial () and comparing Mercurial, Git and BitKeeper.
- Version Control Shenanigans and More version control stuff LiveJournal articles by Bram Cohen, founder of Codeville and a current contributor.
- A look back: Bram Cohen vs Linus Torvalds on a Wincent Colaiuta's weblog describes mailing list thread in which Bram Cohen (of Codeville) and Linus Torvalds (of Git) discuss importance of merge algorithms.
- A Codeville user speaks on Matt Chisholm blog is a Codeville user response to Fraser Speirs post A Subversion User Looks at Git
- Source Code Management for OpenSolaris describes choosing SCM for OpenSolaris (Subversion for centralized SCM, Mercurial for distributed SCM was chosen).
- Repository Formats Matter by Keith Packard, about moving X.Org from CVS to Git (and choosing Git over Mercurial), and the answer in the Mercurial wiki.
- Version control for Linux article by M. Tim Jones, at IBM's developerWorks is an overview of SCM architectures, models, and examples (CVS, Subversion, GNU Arch, Git).
- Whose Distributed VCS Is The Most Distributed? entry by John Goerzen compares chosen 8 "ideal VCS" features (author uses Darcs) against different common SCM: Arch (tla, baz, etc), Bazaar-NG (bzr), Darcs, Git, Mercurial (hg), and Subversion (svn). More on Git, Mercurial, and Bzr, bzr, again and Some more git, mercurial, and darcs compares those SCMs. Read also comments for those articles.
- Git and hg by Ted Tso is a reply to More on Git, Mercurial, and Bzr by John Goerzen, reaching different conclusion but agreeing with description of git shortcomings (ease-of-use and documentation shortcomings).
- What’s happening with Version Control Systems? from January 28, 2007 on Jared’s Blog talks about different SCM systems and gives highly subjective comparison table for Subversion, SVK, Git/Cogito, Mercurial, Bazaar-NG, Darcs and Perforce.
- Directory renaming in SCM on Maciej Bliziński blog checks this specific aspect, or rather adding file to directory renamed in other branch.
- Cyclopedia Square: Cutting Edge Revision Control:, on Bryan Murdock blog, comparez Bazaar-NG ('bzr'), Darcs, Mercurial ('hg') and Git in the terms of performance, usability and handling renames. See also other articles tagged revision control
- A Subversion User Looks at Git and A Subversion User Looks at Git - Part 2 (comments) on Fraser Speirs blog.
- Git vs. Mercurial - comparison of features.
- git-svn - using Git as subversion client
- Git Vs SVN by Michael Tsai
- Git Vs SVN by Sam Vilain
- Git Vs Hg by Ted Tso
- Git Vs Hg by Bart Trojanowski
- 7 Version Control Systems Reviewed in Smashing Magazine describes some of the top open-source SCM: CVS, Subversion (SVN), Git, Mercurial, Bazaar, LibreSource and Monotone, providing besides description also a few important links for each tool;
SCMs comparisons not including Git
- Subversion and CVS Comparison, includes Aegis, Arch, CVS, Subversion, SVK briefly compared table.
- The New Breed of Version Control Systems by Shlomi Fish, at O'Reilly ONLamp (CVS, Subversion, Arch, OpenCM, Aegis, Monotone, BitKeeper).
- Why I dislike Subversion on Michael Olson blog(more of a rant than comparison).
Going by the number of questions on this site for these three distributed version control systems, it seems like Git either
- is more popular, or
- is more difficult (hence requiring more questions), or
- has more features (hence requiring more questions).
About SCM popularity -- see the following StackOverflow question: Are there any popularity / usage statistics available for the Free RCS/SCM/VCS systems?. Here we have questions like what set of ignore files to use for specific kind of project, which are SCM agnostic, but are asked for Git (and using 'git' tag), because it is what person who asked question use.
About Git being more difficult (and therefore having more questions about on SO) -- certainly Git has steeper learning curve. It also uses few (quite) unique concepts, like the staging area (the index), or all branches being equal, which are responsible for its power, but might be difficult to get right at first (especially if one comes from other SCM). Also Git UI is not completely consistent (although it gets better), because it was grown rather than developed; which is responsible for its power, but might lead to suboptimal user interface.
About Git having more features -- you would have to check how many SO questions are about advanced / uncommon features of Git. You should be aware however that open source projects borrow ideas from one another, or have similar features developed independently: one example would be finding bugs by bisecting (searching) history for commit that introduced the bug which was (as far as I know) developed first in Git, and then implemented as plugin in Bazaar, and first extension and currently core functionality in Mercurial. Another would be interactive selecting fragments of changes to commit, inspired by Darcs behaviour. Yet another would be Git's bundle idea, borrowed from similar concept in Mercurial.
Yet another possibility of source of larger number of SO question might be lack of good documentation... although it gets better nowadays with Git User's Manual (distributed with Git) and Git Community Book (found on Git homepage). Still there is this persistent meme that Git has worse documentation than, say, Subversion with its Version Control with Subversion (also known as svnbook) and Mercurial: The Definitive Guide (also known as hg-book)... and people do not read documentation before asking question on StackOverflow, sometimes.
It's not entirely satisfactory having three competing yet largely equivalent open source products to choose from. Personally I use Git and I'm fine with the other two. But when it comes to recommending one system over the others, I'd like to ask: can we start recommending one safely yet?
Well, Git and Mercurial were developed independently starting at nearly the same time in the response of terminating free license for BitKeeper for use by Linux kernel developers, as a replacement for it. Subversion was out of the question as centralized SCM, with lack of support (then) in core for merge tracking; this made it completely unsuitable for the largely distributed development model of Linux kernel. Bazaar was probably too slow (at least then), and a bit on centralized side (I guess).
Git is more powerfull (in my opinion), Mercurial is simpler (in people opinion) and a bit more portable (Python); Git is scriptable and is based on data model allowing independent reimplementations (see e.g. JGit, git written in Java), while Mercurial has Python bindings for writing extensions, and is based largely on API allowing change of underlying repository format (revlog - revlog-ng)... but that is just my supposition. They fill slightly different niches.
Besides isn't having a choice considered good thing? We have KDE and we have GNOME and XFCE (and other window managers and desktop envirionments); we have Emacs and Vim (and other programmer's editors); we have rpm-based (e.g. Fedora Core, Mandriva, SuSE) and deb-based (Debian, Ubuntu) and tgz-based (Slackware) and source-based (Gentoo) distributions; we have KWord, AbiWord and OpenOffice.org... and we have Git, Mercurial and Bazaar.