Using Mercurial Extensions

Expanding the basic functionality of Mercurial with optional extensions.

1. Introduction

Mercurial is designed to offer a small, safe, and easy to use command set which is powerful enough for most users. Advanced users of Mercurial can be aided with the use of Mercurial extensions. Extensions allow the integration of powerful new features directly into the Mercurial core.

<!> Features in extensions may not conform to Mercurial's usual standards for safety, reliability, and ease of use.

Built-in help on extensions is available with 'hg help extensions'. To get help about an enabled extension, run 'hg help <extension-name>'.

2. Enabling an extension

To enable the "foo" extension, either shipped with Mercurial or in the Python search path, create an entry for it in your hgrc, like this:

[extensions]
foo =

You may also specify the full path to an extension (which may be either a .py file or a folder containing __init__.py):

[extensions]
myfeature = ~/.hgext/myfeature.py

To get an extension which is not shipped with Mercurial, just download it to any place in your filesystem. In the example above it was downloaded to ~/.hgext/.

To explicitly disable an extension enabled in an hgrc of broader scope, prepend its path with !:

[extensions]
# disabling extension bar residing in /path/to/extension/bar.py
bar = !/path/to/extension/bar.py
# ditto, but no path was supplied for extension baz
baz = !

Extensions can often be configured further in an extension specific section in the same configuration file.

3. Extensions bundled with Mercurial

These extensions are maintained by the Mercurial project and are distributed together with Mercurial.

Name

Page

Description

acl

AclExtension

Manage commit access to parts of a repo using control lists

alias

AliasExtension

User-defined command aliases (built-in since Mercurial 1.3)

bisect

BisectExtension

Quickly find the revision that introduces a bug or feature bisecting the history tree (O(log(n)) (built-in since Mercurial 1.0)

bookmarks

BookmarksExtension

Markers on commits that move on commit (built-in since Mercurial 1.8)

bugzilla

BugzillaExtension

Update Bugzilla entries when a bug id is referenced in a changeset

children

ChildrenExtension

Display children revisions

churn

ChurnExtension

Show change statistics for mercurial operations per author

convert

ConvertExtension

Convert repositories from other SCMs into Mercurial

color

ColorExtension

Color output for the diff, status and qseries commands

eol

EolExtension

Translate line-ending characters between working copy and repository

extdiff

ExtdiffExtension

Compare changes using external programs

factotum

FactotumExtension

HTTP authentication with factotum

fetch

FetchExtension

Conveniently pull, merge and update in one step

gpg

GpgExtension

Sign changesets and check signatures using GPG

graphlog

GraphlogExtension

Show revision history alongside an ASCII revision graph

hgcia

HgciaExtension

Send notifications to CIA

hgk

HgkExtension

Graphical repository and history browser based on gitk

highlight

HighlightExtension

Highlight syntax in the file revision view of hgweb

histedit

HisteditExtension

Edit, fold, drop changesets in the style of git rebase --interactive

inotify

InotifyExtension

Use linux 2.6 inotify API for instantaneous status updates

interhg

InterhgExtension

This extension allows you to change changelog and summary text just like InterWiki way

keyword

KeywordExtension

Use CVS like keyword expansion in tracked files

largefiles

LargefilesExtension

Track large binary files (new in 2.0)

mq

MqExtension

Mercurial Patch Queues - manage changes as series of patches

notify

NotifyExtension

Send email to subscribed addresses to notify repository changes

pager

PagerExtension

Allows you to choose a pager

parentrevspec

ParentrevspecExtension

Use foo^ to refer to the parent of revision foo

patchbomb

PatchbombExtension

Send a collection of changesets as a series of patch emails

progress

ProgressExtension

Show progress bars for some actions (new in 1.5)

purge

PurgeExtension

Purge all files and dirs in the repository that are not being tracked by Mercurial

rebase

RebaseExtension

Move revisions from a point to another

record

RecordExtension

Select working directory changes to commit by hunk à la darcs record

relink

RelinkExtension

Recreates hardlinks between repository clones

schemes

SchemesExtension

Add shortcuts to urls as url schemes

share

ShareExtension

Share repository history between multiple repos

transplant

TransplantExtension

Cherry-picking, rebasing and changeset rewriting

win32mbcs

Win32mbcsExtension

Allow to use shift_jis/big5 filenames on Windows.

win32text

Win32TextExtension

Manage line ending conversion for Windows repositories

zeroconf

ZeroconfExtension

Announce and browse respositories via zeroconf/bonjour

4. Extensions provided by others

These extensions are not distributed together with Mercurial. The Mercurial project provides no guarantees about these and does not maintain or test them.

Note that Mercurial explicitly does not provide a stable API for extension programmers, so it is up to their respective providers/maintainers to adapt them to API changes.

Name

Page

Description

actionlog

ActionLogExtension

Provides hook intended to help keep track of a remote repository's state that multiple people have access to update

activity

ActivityExtension

Create an image representing the activity of the repository

artemis

ArtemisExtension

Simple and light-weight issue tracker

attic

AtticExtension

Easily deal with individual patches

autopager

AutopagerExtension

Invoke pager when output is longer than one screen

autosync

AutoSyncExtension

Automated duplex synchronization with another repository

b

bExtension

Distributed bug tracker based off the lightweight task manager t

bfiles

BfilesExtension

Handle large binary files

bigfiles

BigfilesExtension

Support versions of big files with storage outside hg repo

boundmode

BoundModeExtension

Enables a bound mode (commit command auto-pushes)

branchhead

BranchHeadExtension

Show head(s) of the branch the working directory or given revision is on

buglink

BugLinkExtension

Allow to link changesets and Issue IDs

bugtracker

BugtrackerExtension

A tiny distributed bugtracking extension for Mercurial

casefold

CaseFoldExtension

Successful unjams case-folding conflicts

caseguard

CaseGuardExtension

Prevents users from adding files to a repository if that could cause a CaseFolding collision

casestop

CasestopExtension

Stops case-folding conflicts on commit

cedit

CeditExtension

Command line editor for configuration files, never manually edit hgrc files again

changelog

ChangelogExtension

Auto-generate commit message from changelog entry

chart

ChartExtension

Display activity graphs (see also ActivityExtension and ChurnExtension)

checkfiles

CheckFilesExtension

Commit hook and command to check for and fix tabs and trailing whitespace

cifiles

CifilesExtension

Print the names of all checked-in files

cloc

ClocExtension

Count lines of source code

codesmell

CodesmellExtension

Ask before committing "smelly" changes

commits

CommitsExtension

Commit modified files as multiple changesets at once

commitsigs

CommitsigsExtension

Embed GnuPG and OpenSSL signatures directly into changesets

committer

CommitterExtension

Record the committer when you are not the author of a changeset.

compass

CompassExtension

Find your way in repositories with multiple heads, branches and bookmarks.

collapse

CollapseExtension

Collapse consecutive changesets into one

config

ConfigExtensionCommandLine

Manage config files via command line only

config

ConfigExtension

Manage hgrc files via dialogs and command line

contains

ContainsExtension

Test whether a changset is contained in a branch

crecord

CrecordExtension

Select graphically which files/hunk/lines to commit

cutehg

CuteHgExtension

A growing set of easy to install and use dialogs for mercurial commands

cvscommit

CvscommitExtension

Push changesets to CVS

defpasswd

DefpasswdExtension

Automatically provide credentials (username/passwords) read from a file.

deps

DepsExtension

Create and manage versioned repository dependencies

digest

DigestExtension

Create and use small digest files for outgoing/bundle

dotlog

DotLogExtension

Yet Another DOT grapher

duckcharset

DuckcharsetExtension

Detect/convert character encoding when displaying

easycommit

EasycommitExtension

Command-line GUI for committing changes

easymerge

EasymergeExtension

Command-line GUI for merging

editcommitmsgs

EditcommitmsgsExtension

Change commit messages for all applied mq patches in one go

exportfiles

ExportFilesExtension

Export all files changed in a revision or revision range to a directory.

exclude

ExcludeExtension

Exclude some modified files by default (e.g., config files that are always modified)

excludechangesets

ExcludeChangesetsExtension

Exclude "bad" changesets from being re-added to a central repository

fastimport

FastImportExtension

Read a git "fast import" stream and turn it into changesets in a Mercurial repository

filereview

FileReviewExtension

Perform code review for any project using mercurial

fixcase

FixcaseExtension

Fix problems where an external tool has changed the case of a filename

fixfrozenexts

FixfrozenextsExtension

Fix extensions.disabled() to work on frozen package

fixrenames

FixrenamesExtension

Replay old history to add rename information

fixutf8

FixUtf8Extension

Fix problems on non-utf8 systems with filenames (Windows never supports utf8 filenames)

foreign

ForeignExtension

Interactively register or delete foreign/unknown files

forest

ForestExtension

Manage a bunch of mercurial repos as a meta repository, with snapshot support thread

flow

FlowExtension

Support for the generalized Driessen's model

ftp

FTPExtension

Manage uploaded snapshots on FTP server

graphviz

GraphvizExtension

Generate DOT language source to visualize changeset tree

group

GroupExtension

Allow to visually regroup a set of changesets

guestrepo

GuestrepoExtension

Handle nested repositories

hgban

BanChangesetsExtension

Ban specific changesets from being reintroduced to a repository after being stripped / removed.

hg-git

HgGit

Push to and pull from a Git server

hg-kerberos

hg-kerberos

Kerberos authentication extension by Henrik Stuart

hg-remotebranches

hg-remotebranches

Keeps track of remote branch heads for each entry in [paths] and exposes them as tags.

hgbb

BitbucketExtension

Several helpers for working with bitbucket.org repositories

hgexternals

HgExternals

Pull external repositories into a Mercurial repository

hgflowdock

FlowdockExtension

Send notifications to flowdock.com

hglist

hglist

An ls command for Mercurial

hglock-le

HgLockLEExtension

Allow users to inform each other in case of parallel file modification in one local repository

hgnested

HgNestedExtension

Manage nested repositories

hgopenurl

HgOpenURLExtension

Quickly show repository URLs in the browser

hgreview

HgReviewExtension

Upload / refresh and fetch patches from rietveld codereview instances

hgsftp

hgsftp

Use Mercurial over SFTP

hgsite

HgSiteExtension

Serve a web site straight out of a Mercurial repository

hgssoauthentication

hgssoauthentication

Allows you to use single sign-on authenticate with web servers that use NTLM or kerberos authentication.

hgsubversion

HgSubversion

Use Mercurial as a Subversion client

hgview

hgview

Tool for visually navigating a repository history and comparing multiple revisions

hg-textauth

hg-textauth

Plaintext file authentication

hgtrac

HgTracExtension

Mercurial/Trac Integration Hook (pre/post hooks for Trac/Mercurial)

histpush

HistpushExtension

Record locally which revisions have been pushed

hotfiles

HotFilesExtension

Designates the files the most susceptible to contain issues

importfs

ImportfsExtension

Imports a set of files from a given file-system into a Mercurial repository as a changeset

info

InfoExtension

Display basic information about a repository

infocalypse

Infocalypse

Share code efficiently, decentrally, anonymous and encrypted over Freenet

kerberos

KerberosExtension

Kerberos Authentication over HTTP support

keyring

KeyringExtension

Securely save HTTP passwords in os-specific keyring (Gnome Keyring, KWallet, OSXKeyChain, encrypted file)

lighttags

LightTagsExtension

Make local tags behave like lightweight tags (shared over clone and pull, not version controlled)

localbranch

LocalbranchExtension

Create clones inside your working directory

lock

LockExtension

Take locks on resources

makewritable

MakewritableExtension

Interactively removes read-only flags from files

mbox

MboxExtension

Import patches from unix mailboxes in MQ

mergediff

MergediffExtension

Show only the changes introduced by a merge

mergeutil

MergeUtilExtension

Useful utilities for merging branches

moinport

MoinportExtension

Fetch changes from MoinMoin Wiki

mqcollab

MqCollabExtension

Manage patches in several parallel queues when working with others

multirepo

MultirepoExtension

Allow commands to affect multiple repositories simultaneously

mutable-branches

MutableBranches

Rename named branches

nearest

NearestExtension

Display the nearest tag from a given changeset

onsub

OnsubExtension

Recursively execute a command in each subrepository

pack

PackExtension

Pack all files involved in the give revision (if your customer does not know what a diff file is)

paste

PasteExtension

Paste changes to pastebin

pastebin

PastebinExtension

Paste changes to public and private pastebins

patience

PatienceExtension

Generate diffs using Bram Cohen's patience diff algorithm

pbranch

PatchBranchExtension

Collaborative and/or long-term patch development and maintenance

perfarce

PerfarceExtension

Allow Hg to pull from and push to a Perforce depot

projrc

ProjrcExtension

Parse project specific config from .hg/projrc

prompt

PromptExtension

Put information about the current repository into a shell prompt

publishall

PublishAllExtension

Publish to all your set repositories (ie: paths)

punchcard

PunchcardExtension

Generate a "punch card" graph of your commit habits

release

ReleaseExtension

Automatize tasks to deal with release management (tag creation, archiving, ...)

remote-bookmarks

RemoteBookmarksExtension

Implementation of git-like bookmark tracking

reviewboard

ReviewboardExtension

Post changesets for review to a Review Board server

qct

QctExtension

Provide access to the Qct commit tool

qtimes

QtimesExtension

Save or restore modification times of files affected by patch queue

qup

QupExtension

Move MQ patches to top of unapplied part of series

rcpath

RcpathExtension

Displays Mercurial configuration file paths and names

rebaseif

RebaseIfExtension

Command that rebases only if there are no conflicts, otherwise does a merge

rdiff

RdiffExtension

Allow diff to work against remote repositories

reposettings

ReposettingsExtension

Allow repo specific configuration from central configuration files

rsync

RemoteSyncExtension

Keep your working directory in sync with remote files, that exist outside of the repository

rupdate

RemoteUpdateExtension

Update a remote repository to a specified revision if the remote repository is hosted via ssh

send

SendExtension

Automatic send of bundle containing changesets missing on remote, like darcs send

shared_mq

SharedMQExtension

Allow shared repositories have same MQ queues

shelve

ShelveExtension

Interactively select changes to set aside

snap

SnapExtension

Version (big) file snapshots with storage outside a Mercurial repository

softrebase

SoftRebaseExtension

Turn possibly complicated rebase calls into multiple simpler ones

sonichg

SonicHgExtension

Record pushlog data, web interfaces to view pushlog & shortlog with slider, advanced search for pushlog, new file log page, full side-by-side diffs, regex filter, commit syntax warning and more!

spellcheck

SpellcheckExtension

Interactively correct spelling errors in commit messages; also includes a hook to reject changesets with spelling errors in their commit messages

subpaths

SubpathsExtension

Manage subpath remappings using a central file, distributed on clone and pull

sync

SyncExtension

Perform pull, update/merge and push in a single click

talaria

TalariaExtension

Manage simple hierarchical trees of HTML-documents, such as web-sites, documentation, etc

tasks

TasksExtension

Manage tasks as collections of contiguous changesets

textful

TextfulExtension

Convert binary file to text or handle character encoding when displaying

tfs

TfsExtension

Update Team Foundation Server work items when bug ids are referenced in a changeset

timestamp

TimestampExtension

Saves and restores file timestamps

timestamp_mod

TimestampModExtension

Automatically Saves and restores file timestamps for all files in the repository.

timetracker

TimetrackerExtension

Tracks the time spent on a project

tpager

TpagerExtension

Mercurial pager with color support on Windows

versions

VersionsExtension

Display the version information for Mercurial and all installed extensions.

webuserdir

WebUserDirExtension

Host users' repositories under /~username/ on hgwebdir

win32chcp

Win32ChCpExtension

Switches the Windows console into an encoding actually used by Mercurial on output.

win32lfn

Win32LongFileNamesExtension

Allow manipulating files with names longer than 260 characters on Windows.

win32xattrs

Win32xattrsExtension

handle windows-specific file attributes like "hidden"

wincolor

WinColorExtension

Support colors on Windows consoles.

zipdoc

ZipdocExtension

Version control zipped document formats like docx or odt as uncompressed zip archives to improve delta compression.

5. See also


CategoryBundledExtension CategoryExtensionsByOthers

French, Japanese, German