Perform clones by fetching a pre-built bundle file.

1. Status

This extension has effectively been superseded by built-in clone bundles functionality. Server operators should install the official/distributed clonebundles extension to achieve similar functionality.

This extension is not distributed with Mercurial.

Author: Gregory Szorc / Mozilla

Repository: https://hg.mozilla.org/hgcustom/version-control-tools/ (hgext/bundleclone)

2. Overview

When you hg clone with default options, the Mercurial server will dynamically and seemlessly generate a bundle and stream it to the client. This is conceptually equivalent to piping hg bundle into a socket and unbundling at the other end.

Generation of bundles can be computationally expensive and the cost scales in proportion to the size of the repository. For very large repositories, this can put a lot of load on the Mercurial server and can lead to slowness.

The bundleclone extension supplements the built-in clone command and gives servers the opportunity to advertise pre-generated bundle files. Cloning will thus first fetch a pre-generated bundle file, apply it, then perform an incremental pull to obtain changesets not in the bundle.

With the bundleclone extension in place and with high adoption by clients, Mercurial server load for clones drops drastically.

3. Configuration

Configure your .hgrc on client and server to enable the extension by adding following lines:

bundleclone = /path/to/bundleclone

On the server, you'll also need to create a file in the .hg directory defining what bundles are available. You'll also need to configure a server (HTTP, FTP, etc) where these files can be fetched from. See the comments in bundleclone's init.py for complete docs.


BundleCloneExtension (last edited 2016-12-08 18:37:35 by GregorySzorc)