Online Book Reader

Home Category

Mercurial_ The Definitive Guide - Bryan O'Sullivan [8]

By Root 911 0
distinction that centralized tools impose: that between insiders (people with commit access) and outsiders (people without).

They make it easier to reconcile after a social fork, because all that’s involved from the perspective of the revision control software is just another merge.

Some people resist distributed tools because they want to retain tight control over their projects, and they believe that centralized tools give them this control. However, if you’re of this belief, and you publish your CVS or Subversion repositories publicly, there are plenty of tools available that can pull out your entire project’s history (albeit slowly) and recreate it somewhere that you don’t control. So while your control in this case is illusory, you are forgoing the ability to fluidly collaborate with whatever people feel compelled to mirror and fork your history.

Advantages for Commercial Projects

Many commercial projects are undertaken by teams that are scattered across the globe. Contributors who are far from a central server will see slower command execution and perhaps less reliability. Commercial revision control systems attempt to ameliorate these problems with remote-site replication add-ons that are typically expensive to buy and cantankerous to administer. A distributed system doesn’t suffer from these problems in the first place. Better yet, you can easily set up multiple authoritative servers, say one per site, so that there’s no redundant communication between repositories over expensive long-haul network links.

Centralized revision control systems tend to have relatively low scalability. It’s not unusual for an expensive centralized system to fall over under the combined load of just a few dozen concurrent users. Once again, the typical response tends to be an expensive and clunky replication facility. Since the load on a central server—if you have one at all—is many times lower with a distributed tool (because all of the data is replicated everywhere), a single cheap server can handle the needs of a much larger team, and replication to balance load becomes a simple matter of scripting.

If you have an employee in the field, troubleshooting a problem at a customer’s site, they’ll benefit from distributed revision control. The tool will let them generate custom builds, try different fixes in isolation from each other, and search efficiently through history for the sources of bugs and regressions in the customer’s environment, all without needing to connect to your company’s network.

Why Choose Mercurial?

Mercurial has a unique set of properties that make it a particularly good choice as a revision control system:

It is easy to learn and use.

It is lightweight.

It scales excellently.

It is easy to customize.

If you are at all familiar with revision control systems, you should be able to get up and running with Mercurial in less than five minutes. Even if not, it will take no more than a few minutes longer. Mercurial’s command and feature sets are generally uniform and consistent, so you can keep track of a few general rules instead of a host of exceptions.

On a small project, you can start working with Mercurial in moments. Creating new changes and branches, transferring changes around (whether locally or over a network), and history and status operations are all fast. Mercurial attempts to stay nimble and largely out of your way by combining low cognitive overhead with blazingly fast operations.

The usefulness of Mercurial is not limited to small projects: it is used by projects with hundreds to thousands of contributors, each containing tens of thousands of files and hundreds of megabytes of source code.

If the core functionality of Mercurial is not enough for you, it’s easy to build on. Mercurial is well suited to scripting tasks, and its clean internals and implementation in Python make it easy to add features in the form of extensions. There are a number of popular and useful extensions already available, ranging from helping to identify bugs to improving performance.

Mercurial

Return Main Page Previous Page Next Page

®Online Book Reader