My favorites | Sign in
Project Home Wiki Issues Source
Search
for
ChoosingAVersionControlSystem  
Deciding between Subversion and Mercurial when creating a project.
Updated Sep 11, 2011 by jrobbins@google.com

Deciding between Subversion and Mercurial/Git when creating a project.

When creating a new project on Google Code, you need to choose between Subversion, Mercurial, and Git as a version control system (VCS). There is no right answer to picking a VCS. They are all easy to use, have a large community behind them, and are used by popular projects. They have demonstrated themselves fit for their purpose. It is therefore likely that your project will be productive regardless of your choice. Typically, most projects pick a VCS based on their team members' preference and the team's perceived workflow.

Subversion

Subversion is a well-known centralized VCS and the most widely used VCS for open source projects.

  • The largest benefit of using Subversion is that it's familiar to most developers, so they can start contributing to projects immediately without having to figure out a new VCS.
  • Subversion can scale to support larger projects, but it works especially well for small/medium sized projects.
  • Subversion also works well for teams where most software contributions are expected from other team members. Unlike distributed version control systems (DVCS), however, team members cannot make check-ins when they are offline.

For more information on Subversion, you might start with the free online Subversion book.

Mercurial/Git

Mercurial and Git, like Bazaar, are Distributed Version Control Systems (DVCS) that enables developers to work offline and define more complex workflows such as peer-to-peer pushing/pulling of code.

  • DVCS makes it easier for outside contributors to contribute to projects, as cloning and merging of remote repositories is very easy.
  • Large projects with multiple developers and external contributors benefit the most from DVCS because of the ease of branching and tagging. Smaller projects typically only experience the benefit of being able to work offline.

For a great (and fun) tutorial on Mercurial, take a look at http://hginit.com. For Git, try http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html.

Comment by krzyszto...@gmail.com, May 29, 2009

Why not git?

Comment by artdent, Jun 1, 2009

There's no reason not to choose git, except that you have to find your own hosting for it. You can of course still use the other features of Google Code for your project.

I've updated the wording slightly to make it more clear that this guide is specific to choosing a vcs hosted on Google Code, not the more general question.

Comment by salmiak...@gmail.com, Jul 8, 2009

Which one to choose? I don't have any experience with Mercurial ( or git for that matter ), but I find Bazaar easier to use than subversion.

The most logical choice seems to be Mercurial in my case ( I'm really wanna stick to Bazaar ) because Bazaar is more like Mercurial than is? to Subversion, but it seems like I won't be able to work with Mercurial trough Bazaar.

There is a plugin for Bazaar that allow one to read a Mercurial branch but not write to it ( http://bazaar-vcs.org/BzrForeignBranches/Mercurial ).

The wording "Mercurial, like Git and Bazaar..." made me confused ( maybe as I did just skim it fast ) to belive that Mercurial is the one to choose if I uses Bazaar.

It would be nice if you stated out that Bazaar can't be used together with Mercurial ( in the moment of writing ), or if I might be wrong and there is a way that you know of; add it instead.

Thanks.

Comment by chandoos...@gmail.com, Jul 20, 2009

Let me know which one is good for a .net project

Comment by chandoos...@gmail.com, Jul 20, 2009

please reply to my email.

Comment by amardeshbd, Jul 29, 2009

@chandoosgroup: it doesnt matter if you use .net or php or java or anything else, svn is most commonly used VCS and it should meet anyone's demmand.

Note: Subversion is similar to CVS, but it overcome some of the shorcomings of CVS.

Comment by mm.mpa...@gmail.com, Aug 14, 2009

But the concept of a DVCS is the way to go, if you once tried it, then you never want to work without - so use the best of them, which are:

Mercurial, Git, Bazaar

As Bazaar is much slower then the other two, and Mercurial is the one who is a available I would choose Mercurial FOR EVERY PROJECT HERE.

Comment by francisd...@gmail.com, Sep 4, 2009
  • Git is equal to Mercurial but Git is more advanced and robust
  • CVS is equal to Subversion (aka SVN) but SVN is more modern
Comment by gim...@gmail.com, Sep 5, 2009

I wonder, would any of the popularity of SVN be due to the combined facts, as follows? PS I understand, this is no wicked conspiracy, thanks....

1) SVN, as I understand it, runs by way of HTTP 2) HTTP-based SCCM systems would have an easy time operating across corporate firewalls, by using corporate HTTP proxies

....or is that just an "unintended feature" of it?

Comment by arnauldvm, Nov 30, 2009

About Git vs. Mercurial, there is an analysis in article DVCSAnalysis (dating from summer 2008)

Comment by sobne...@gmail.com, Dec 1, 2009

Why can not I create a project? The Button of "createproject" can not be used; It has been a gray all the time....

Comment by ikojba, Dec 11, 2009

About using Git, if you want to use it locally, of course you can go for subversion and use the git-svn packages.

Comment by kah...@gmail.com, Dec 25, 2009

I chose Mercurial for my last private little project.. Just because I know nothing about DVCS, and want have some try..

Comment by kfir.s...@gmail.com, Jan 15, 2010

is support in the pipeline?

Comment by mm.mpa...@gmail.com, Jan 17, 2010

@francisdinh:

Says who? Mercurial was started BEFORE git.

If Linus and Matt would have known from each other, Linus perhaps wouldnt even developed a own system, he just didnt know that another kernel developer (Matt) already started one.

So just from the time factor I believe Mercurial is more robust, also because of the more failure-avoiding Python programming language (the speed parts altough are also implemented in C).

But the major opportunity of Mercurial over Git is that there is a native Windows implementation that works right out of the box (TortoiseHG with nice GUI stuff) instead of a halfbaked cygwin solution.

Also there are more plugins for the big IDEs then for git. (Netbeans has it native, also there is a Eclipse plugin, etc.)

Git is mostly linux & co. - focused, no wonder why (Linus).

Comment by je...@ieee.org, Feb 18, 2010

CVS, Subversion, Mercurial, Git, Bazaar. Maybe I'll just keep my code on my own hard drive, come back in a couple years and see if the war is over :)

Comment by Codemast...@gmail.com, Feb 19, 2010

^ I totally agree with ya!

Comment by Morten.Fjeldstad@gmail.com, Apr 18, 2010

Use whatever SCM system best suits your needs and just ignore all the fanboy statements on which is "best" since that is 100% subjective.

IMHO the two systems Google are hosting would cover most usecases for an FOSS development team.

Comment by alex.ble...@gmail.com, May 14, 2010

Since the initial analysis (mentioned <a href="http://code.google.com/p/support/wiki/DVCSAnalysis">above</a>) Git has acquired the <a href="http://progit.org/2010/03/04/smart-http.html">Smart HTTP Protocol</a>, which makes HTTP-based checkouts as fast as Git-based checkouts, possibly even surpassing Hg at efficiency. Although it seems unlikely that Google will add Git, it's possible to use git-svn to interact with an SVN based repository, or use git-hg to interact with the hg repository.

Comment by alex.ble...@gmail.com, May 14, 2010

FYI if you want to record your vote for Git support, do it here: http://code.google.com/p/support/issues/detail?id=2454

Comment by tgu...@gmail.com, Aug 30, 2010

@mm.mpathy:

According to Wikipedia, which cites external sources, Git started a bit before mercurial and was self-hosting nearly two weeks before mercurial was even announced. Both project started quickly after the announced the retirement of the free version of BitKeeper?, which prompted Linus to move to another VCS; so both where aiming at being the VCS for Linux Kernel development.

Comment by ljw...@gmail.com, Sep 21, 2010

楼下需要中文

Comment by yurkor...@gmail.com, Dec 29, 2010

When I tried to commit my code with svn ci it returns error "svn: Commit failed (details follow): svn: Server sent unexpected return value (405 Method Not Allowed) in response to MKACTIVITY request for '/svn/!svn/act/acf5cd6f-e8d7-476e-a572-a61a5d293586' "

how this can be fixed?

Comment by adi_chak...@yahoo.com, Jan 12, 2011

Can i host Version control system(probably SVN) at our servers, and still can manage download hosting at google code.

Comment by classifiedg, Nov 4, 2011
Comment by babajide...@gmail.com, Mar 29, 2012

pls am trying to incorporate google books API into a filemaker app, but really dont how to go about it. Anyone to please hlep me out on it. It's very urgent...

Comment by aldo.roman.nurena, Apr 20, 2012

for GIT learning, it's recommended: http://progit.org/book/ (since the link above is not working any more)


Sign in to add a comment
Powered by Google Project Hosting