This module provides high-level tools for managing Mercurial repositories.


Require the hg command-line tool.


from fabric.api import run
from fabtools import require

run('hg --help')
fabtools.require.mercurial.working_copy(remote_url, path=None, branch='default', update=True, use_sudo=False, user=None)[source]

Require a working copy of the repository from the remote_url.

The path is optional, and defaults to the last segment of the remote repository URL.

If the path does not exist, this will clone the remote repository and check out the specified branch.

If the path exists and update is True, it will pull changes from the remote repository, check out the specified branch, then update the working copy.

If the path exists and update is False, it will only check out the specified branch, without pulling remote changesets.

  • remote_url (str) – URL of the remote repository
  • path (str) – Absolute or relative path of the working copy on the filesystem. If this directory doesn’t exist yet, a new working copy is created through hg clone. If the directory does exist and update == True, a hg pull && hg up is issued. If path is None the hg clone is issued in the current working directory and the directory name of the working copy is created by hg.
  • branch (str) – Branch or tag to check out. If the given value is a tag name, update must be False or consecutive calls will fail.
  • update (bool) – Whether or not to pull and update remote changesets.
  • use_sudo (bool) – If True execute hg with fabric.operations.sudo(), else with fabric.operations.run().
  • user (str) – If use_sudo is True, run fabric.operations.sudo() with the given user. If use_sudo is False this parameter has no effect.