I am about to start a project and was thinking of using Google Code to host it. It gives the option of using Mercurial or SVN for version control. I have never before used a VCS, and would like to know which one is easier to work with.
The project involves two main programmers, but a few others may contribute small amounts. It is mostly in python and we use Emacs as the primary editor. We are both using the Windows operating system.
Piper is a renowned version control tool that Google is using as a vast repository. Across the universe, it has been distributed over around ten Google data centers.
Google doesn't use GitHub, or Git. Instead they have their own, pretty insane system called Piper. There is only one Piper repository. Different projects are different subdirectories within the same massive repository.
In 2013, Facebook adopted Mercurial and began work on scaling it to handle their large, unified code repository. Google also uses Mercurial client as a front-end on their cloud-based 'Piper' monorepo back-end.
We currently use Subversion 1.4. 0, made available via WebDAV. Anonymous checkouts can be done via http://, while developers must use authenticated https:// to commit changes.
Use Mercurial.
Both systems will be easy, but Mercurial will be fast. Want to compare the differences between what someone else did last night and what you did last night? With SVN that's going to take a couple of seconds per file while it talks to Google's servers. With Mercurial it will be pretty much instant.
A couple of seconds per diff might not sound like a lot, but the benefits of a snappy, responsive interface will become apparent once you use a system that eliminates (most) of those pauses.
Oh, and people can fork your project without it being a huge pain in the ass. That's pretty cool too.
EDIT: Mercurial also doesn't feel the need to slap a .svn
folder in every single folder in your project. Those things are ugly (and not hidden by default on Windows, like they would be on *nix system). There will just be one .hg
folder at the root of your project, which is much cleaner.
EDIT: One more reason to use Mercurial: hg bisect
. Tracking down a bug in 10 minutes instead of 2 hours because you were able to find the exact revision that caused it is awesome. It looks like there's a Perl svn-bisect
tool but it's not in the core, and SVN's slowness in updating between revisions will make it a much longer process.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With