If you’ve ever written code for a living, you are familiar with source code control. Even single-person shops can struggle with managing multiple versions of code as well as managing code from different projects. Over the years, source code and revision control systems have been developed to address this task. Some of the more common open-source systems in use are Subversion (SVN), GIT, and Mercurial. There are also a number of proprietary systems as well.
Derek is a software engineer who uses Mercurial in his daily job. Mercurial is a distributed version control system (DVCS). Recently, Derek had to use GIT for some projects he was working on in coordination with a couple of other developers. GIT is also a DVCS. One morning Derek started his work day by launching Visual Studio and discovered a problem—nothing loaded. A peek into his project directory confirmed that there was nothing to load, “It was gone, all gone.” What was gone was about 200MB of files—his source code, images, etc. for his current project. His code was missing in action.
After a fair amount of angst and some RTM (read the manual) time, Derek was able to determine that his dilemma was caused by GIT or more correctly, how he had used GIT. Once he calmed down, Derek was able to use Backblaze to restore his missing files and get back to work. He also took a few minutes to document his experience on his blog.
Derek likes to use Mercurial; GIT not so much. There are many developers that agree with Derek and just as many or more that will disagree. Opinions abound; “Mercurial is easier to use,” “GIT is faster and more powerful,” “Mercurial is only for small projects,” “GIT is better at branching,” “Mercurial is better at branching,”—lots of opinions. Here are a few articles that compare the two systems. The articles are a year or two old, but still worth the read.
Lots of good information there, but what if choosing is moot because “the war is over?” That is what David Soria Parra asserts in his post “Mercurial vs. Git vs. Bazaar: The aftermath,” where he declares GIT the winner. Maybe you haven’t gotten into the DVCS war because you continue to use Subversion or CVS or another similar centralized control system. Perhaps you fall into the “it just doesn’t matter” camp because you are using a product like Kiln, which provides a common repository for GIT or Mercurial so that no matter which one of these DVCS systems your team is using on a project, they can share their code. Of course, Kiln and similar systems are not free, but perhaps such a system would have helped out our friend Derek—in the meantime, Backblaze to the rescue.
What do you use, GIT, Mercurial, something else, or all of the above? More important, what do you think is next in source code and revision control? Let us know.