High Availability
Naturally, as a distributed version control system, Mercurial remains highly available for individual users even when remote servers are unavailable.
However, in many organisations, build, review, CI and change control tooling may depend heavily on the centralised repositories, and high availability of these repositories would therefore be desirable in order to avoid major interruptions. How might one deploy a Mercurial service to maximise availability?
hgsql
Facebook has created a Mercurial extension hgsqlExtension that uses a MySQL database for centralised storage of repository data.
This improves availability by allowing individual servers to be taken down for repair without any downtime to the system as a whole. However, to some extent, this merely substitutes the problem of making Mercurial highly available with the problem of making MySQL highly available.